SQL值不会填充ASP DropDownList控件

时间:2009-08-13 20:07:12

标签: .net asp.net sql ado.net

我正在尝试填充下拉列表控件。 '输入'是数据库。表是'ApplicationName',它有一个随机值。

出于某种原因,当我单击“测试提交”按钮时,控件中没有任何内容出现(DropDownList1)。

protected void TestSubmit_ServerClick(object sender, EventArgs e)
{
    // Initialize the database connector.
    SqlConnection connectSQL = new SqlConnection();

    // Send the connection string.
    connectSQL.ConnectionString = @"Data Source = localhost\SQLEXPRESS;" + 
        "Initial Catalog = Inputs; Integrated Security = SSPI";

    try
    {
        // Setup our command.
        SqlCommand theCommand = new SqlCommand("SELECT * FROM Inputs", connectSQL);

        // Write the stored value in the text boxes.
        connectSQL.Open();

        SqlDataReader theReader;

        theReader = theCommand.ExecuteReader();
        theReader.Read();

        DropDownList1.Items.Add(theReader["ApplicationName"].ToString());

        theReader.Close();
        connectSQL.Close();
    }
    catch (Exception ee)
    {
        MessageBox("Oopsie: " + ee);
}       

4 个答案:

答案 0 :(得分:4)

您是否考虑过使用SqlDataSource?对于你来说,维护和防范缺陷的代码要少得多。

     <asp:DropDownList id="DropDownList1"
          runat="server"
          DataTextField="ApplicationName" 
          DataValueField="ApplicationName"
          DataSourceID="AppDataSource">
      </asp:DropDownList>

  <asp:SqlDataSource
          id="AppDataSource"
          runat="server"
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT ApplicationName FROM Inputs">
  </asp:SqlDataSource>

答案 1 :(得分:0)

我想你想做一段时间(reader.read())

然后填充类似数据集或列表的内容,然后将下拉列表数据源设置为数据集或列表。

答案 2 :(得分:0)

如果您的表名是“ApplicationName”......您的SQL语句不应该是SELECT * FROM ApplicationName吗?您是否尝试过查看您的读者是否有任何结果?

答案 3 :(得分:0)

如果将数据库查询中选择的列与DropDownList定义中的DataTextField和DataValueField匹配,则只需执行以下操作:

DropDownList1.DataSource = theReader;  
DropDownList1.DataBind()

甚至

DropDownList1.DataSource = theCommand.ExecuteReader();