从SQL Server数据库填充下拉列表

时间:2014-12-29 13:31:37

标签: c# sql-server tsql

我有一个ASPX页面,上面有一个下拉菜单。

<div>
    <p>Pick a customer to show their order(s)</p>
    <asp:DropDownList ID="customerSelect" AutoPostBack="true" runat="server" OnSelectedIndexChanged="customerSelect_SelectedIndexChanged"></asp:DropDownList>
</div>

我希望从客户名称数据库中填充下拉列表中的选项。

这是我的数据库的样子

database

这是我背后的代码

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        populateDropDown();
        customerSelect_SelectedIndexChanged(null, null);
    }
}

public void populateDropDown()
{
    SqlCommand cmd = new SqlCommand("SELECT * FROM [Orders]", new SqlConnection(ConfigurationManager.AppSettings["ConnString"]));
    cmd.Connection.Open();

    SqlDataReader ddlValues;
    ddlValues = cmd.ExecuteReader();

    customerSelect.DataSource = ddlValues;
    customerSelect.DataValueField = "OrderID";
    customerSelect.DataTextField = "CustomerName";

    cmd.Connection.Close();
    cmd.Connection.Dispose();

}

之前我使用过这段代码。所以我一定要错过一些简单的东西,但我不确定它是什么。

EDIT 我没有错。代码编译。但下拉列表仍为空白。

1 个答案:

答案 0 :(得分:4)

好吧,我想你忘记绑定你的下拉列表了;

customerSelect.DataBind();

使用using statement来处理您的SqlCommandSqlConnectionSqlDataReader,而不是手动调用.Dispose()方法。

using(SqlConnection con = new SqlConnection(connString))
using(SqlCommand cmd = con.CreateCommand())
{
    ...
    ...
    using(SqlDataReader ddlValues = cmd.ExecuteReader())
    {
       ...
    }
}