我有一个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>
我希望从客户名称数据库中填充下拉列表中的选项。
这是我的数据库的样子
这是我背后的代码
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 我没有错。代码编译。但下拉列表仍为空白。
答案 0 :(得分:4)
好吧,我想你忘记绑定你的下拉列表了;
customerSelect.DataBind();
使用using
statement来处理您的SqlCommand
,SqlConnection
和SqlDataReader
,而不是手动调用.Dispose()
方法。
using(SqlConnection con = new SqlConnection(connString))
using(SqlCommand cmd = con.CreateCommand())
{
...
...
using(SqlDataReader ddlValues = cmd.ExecuteReader())
{
...
}
}