我尝试运行此代码
private void LoadProdName()
{
con.Open();
cmd = new SqlCommand(@"SELECT productName
FROM Products3
WHERE productType = @Type",con);
cmd.Parameters.AddWithValue("@Type",ddlProducts.SelectedItem.Value.ToString());
da = new SqlDataAdapter(cmd);
dt = new DataTable();
da.Fill(dt);
ddlProdName.DataSource = dt;
ddlProdName.DataBind();
con.Close();
}
我的selectedIndesChange代码:
protected void ddlProducts_SelectedIndexChanged(object sender, EventArgs e)
{
LoadProdName();
}
使用我的第一个下拉列表的值。我的问题是,每当我在下拉列表中选择ProductType时,它将使用select查询填充我的第二个DDL,但我从第二个下拉列表中得不到任何数据。
答案 0 :(得分:0)
对于级联下拉列表,您必须在下拉列表事件中进行回发" OnSelectedIndexChanged"或者对你的方法使用AJAX调用
试试本指南:http://www.aspsnippets.com/Articles/Creating-Cascading-DropDownLists-in-ASP.Net.aspx
在查询后尝试此代码
ddlProdName.DataSource = cmd.ExecuteReader();
ddlProdName.DataTextField = "productName";
ddlProdName.DataValueField = "productName"; //or productId
ddlProdName.DataBind();
答案 1 :(得分:0)
在您的情况下,您需要执行以下操作:
ddlProdName.DataTextField = "productName"; //this is the name of column that's in your datatable.
ddlProdName.DataValueField = "productName";
如果您要指定除简单数据类型集合以外的任何内容作为数据源,则需要指定DisplayMember
和ValueMember
(在winforms中)和DataTextField
以及{{ 1}}(在webforms中,来自Sergio的答案)组合框的属性,以便它知道要显示哪个属性以及哪个属性应该用作值。
DataValueField