C# 用列的名称填充列表框或复选框列表

C# 用列的名称填充列表框或复选框列表,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在创建一个系统,该系统基本上允许用户基于数据库选择标准,以便制定SQL查询并运行它们以将数据输出到excel。我目前正在尝试创建一种功能,允许用户从上一步中选择的表中选择列。我曾尝试使用repeater控件来实现此目的,但无法使其正常工作,因此我所做的是创建一个div,并使用runat=“server”作为容器,在后面的代码中,我有一个字符串列表,用于存储用户在上一步中从两个下拉列表中选择的所有表。我目前拥有的代码如下: SelectedTables.Add(PrimaryT

我正在创建一个系统,该系统基本上允许用户基于数据库选择标准,以便制定SQL查询并运行它们以将数据输出到excel。我目前正在尝试创建一种功能,允许用户从上一步中选择的表中选择列。我曾尝试使用repeater控件来实现此目的,但无法使其正常工作,因此我所做的是创建一个div,并使用runat=“server”作为容器,在后面的代码中,我有一个字符串列表,用于存储用户在上一步中从两个下拉列表中选择的所有表。我目前拥有的代码如下:

        SelectedTables.Add(PrimaryTableList.SelectedItem.Text);
        foreach (ListItem table in SecondaryTableList.Items)
        {
            if (table.Selected)
            {
                SelectedTables.Add(table.Text);
            }
        }

        string connStr = ConfigurationManager.ConnectionStrings["umbracoDbDSN"].ConnectionString;
        SqlConnection msSQLconnection = new SqlConnection(connStr);
        if (msSQLconnection.State == ConnectionState.Closed)
        {
            msSQLconnection.Open();
        }
        foreach (String tableName in SelectedTables)
        {
            ListBox ColumnsList = new ListBox();
            AvailableFieldsDiv.InnerHtml += "<p>" + tableName + "</p>";
            AvailableFieldsDiv.Controls.Add(ColumnsList);
            SqlCommand msSqlCommand = new SqlCommand("exec sp_columns '" + tableName + "'", msSQLconnection);
            SqlDataAdapter msSqlAdapter = new SqlDataAdapter(msSqlCommand);
            DataSet myDataSet = new DataSet();
            msSqlAdapter.Fill(myDataSet);
            ColumnsList.DataSource = myDataSet;
            ColumnsList.DataBind();
        }
        if (msSQLconnection.State == ConnectionState.Open)
        {
            msSQLconnection.Close();
        }
SelectedTables.Add(PrimaryTableList.SelectedItem.Text);
foreach(SecondaryTableList.Items中的ListItem表)
{
如果(选定的表格)
{
选择表格。添加(表格。文本);
}
}
字符串connStr=ConfigurationManager.ConnectionString[“umbracoDbDSN”]。ConnectionString;
SqlConnection-msSQLconnection=newsqlconnection(connStr);
if(msSQLconnection.State==ConnectionState.Closed)
{
msSQLconnection.Open();
}
foreach(SelectedTables中的字符串tableName)
{
ListBox ColumnsList=新建ListBox();
AvailableFieldsDiv.InnerHtml+=“”+tableName+”

”; AvailableFieldsDiv.Controls.Add(ColumnsList); SqlCommand-msSqlCommand=newsqlcommand(“exec sp_columns'+tableName+”,msSQLconnection); SqlDataAdapter msSqlAdapter=新的SqlDataAdapter(msSqlCommand); DataSet myDataSet=新数据集(); msSqlAdapter.Fill(myDataSet); ColumnsList.DataSource=myDataSet; ColumnsList.DataBind(); } if(msSQLconnection.State==ConnectionState.Open) { msSQLconnection.Close(); }

我在这段代码中遇到的问题是,当我尝试创建ListBox并将其添加到容器div时,我会收到一个错误,声明“无法获取AvailableFieldsDiv的内部内容,因为内容不是文字。”,我还考虑使用复选框列表而不是列表框,因为这将允许用户一次选择多个列。提前感谢。

检查这是从HTML表中提取值。我正试图从选定的SQL表中获取列名,并将该列名列表用作动态创建的列表框或复选框列表的数据源。