asp.net C#中的多列下拉列表

本文关键字:下拉列表 net asp | 更新日期: 2023-09-27 18:25:00

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

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中选择任何产品时,此代码可以很好地显示DropDown列表中的所有productName和代码。。只有在DropDownList和ProductName中选择的产品代码显示在一个文本框中,我知道我缺少SelectedIndex更改事件。请指导我如何实现

asp.net C#中的多列下拉列表

如果您有这样的下拉列表,请注意,我已经添加了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];
        }

由于您是以纯文本形式绑定到格式为"name|id"的列表项,因此您必须如上所述获取选定的值。

建议--您应该绑定为textfield=name,绑定为valuefield作为ID。

foreach (DataRow dr in datatable.Rows)
            {
                list.Add(new ListItem(dr[0].ToString(), dr[1].ToString()));
            }

因此,如果按照这种方式,您只需要将选定的产品名称获取为"ddl.SelectedItem.Text"。