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更改事件。请指导我如何实现
如果您有这样的下拉列表,请注意,我已经添加了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
"。