绑定下拉列表中的数据

时间:2016-05-26 18:19:45

标签: c# mysql asp.net

我尝试运行此代码

  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,但我从第二个下拉列表中得不到任何数据。

现在我取得了一些进展。 这就是我现在得到的: enter image description here

2 个答案:

答案 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";

如果您要指定除简单数据类型集合以外的任何内容作为数据源,则需要指定DisplayMemberValueMember(在winforms中)和DataTextField以及{{ 1}}(在webforms中,来自Sergio的答案)组合框的属性,以便它知道要显示哪个属性以及哪个属性应该用作值。

DataValueField