我有一个数据库表,其中包含两个字段代码,产品名称表包含以下数据。
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改变事件。请指导我如何实现这个
答案 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;。