asp.net中的多列DropDown列表C#

时间:2014-09-28 11:40:33

标签: c# asp.net

我有一个数据库表,其中包含两个字段代码,产品名称表包含以下数据。

code 10 productName Sugar,code 20 productName  rice,code 30 productName  milk

我有一个带DropDownList的asp.net页面。我想在这里获取DropDownList中的所有数据是我的代码

if (!IsPostBack)
{
    using (SqlDataAdapter adapter = new SqlDataAdapter("select distinct ProductName,code from item", db.con))
    {
        DataTable datatable = new DataTable();
        adapter.Fill(datatable);

        //   EditableDropDownList2.DataSource = datatable;

        List<ListItem> list = new List<ListItem>();

        foreach (DataRow dr in datatable.Rows)
        {
          string descr = string.Format("{0}|{1}", dr[0].ToString(), dr[1].ToString());
            list.Add(new ListItem(descr));

        }

        list = list.OrderBy(a => a.Text).ToList();
        DropDownList2.DataSource = list;

       DropDownList2.DataBind();
}

当我在DropDownList中选择任何产品时,此代码可以正常显示DropDownList中的所有productName和代码。只有DropDownList中的产品代码选择和文本框中的ProductName显示我知道我缺少的东西SelectedIndex改变事件。请指导我如何实现这个

1 个答案:

答案 0 :(得分:0)

如果您有下拉列表,请注意我已添加selectedindexchanges和autopostback(这是必需的,因为如果您更改了必须回发的内容,并且在选定的索引更改事件上,您将能够捕获此内容。)

  <asp:DropDownList ID="ddl" runat="server" OnSelectedIndexChanged="ddl_SelectedIndexChanged" AutoPostBack="true"/>

在后面的代码中你可以写这个。

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selectedProductName = ddl.SelectedValue.Split('|')[0];
        }

由于您使用格式&#34; name | id&#34;作为纯文本绑定到listitem,您必须获得如上所述的选定值。

建议 - 您应该将textfield = name和valuefield绑定为ID。

foreach (DataRow dr in datatable.Rows)
            {

                list.Add(new ListItem(dr[0].ToString(), dr[1].ToString()));

            }

因此,如果您按照这种方式操作,则只需将选定的产品名称设为&#34; ddl.SelectedItem.Text&#34;。