Dropdown SelectedValue更改不相关的属性
本文关键字:属性 不相关 SelectedValue Dropdown | 更新日期: 2023-09-27 18:00:41
drpDwnLstBillContact.SelectedValue = billContactId.ToString();
drpDwnLstRegContact.SelectedValue = regContactId.ToString();
drpDwnLstTechContact.SelectedValue = techContactId.ToString();
我正在尝试设置下拉列表的selectedvalue属性,但遇到问题。
变量的值为:
billContactId=786867;
regContactId=3487347;
techContactId=37463;
问题出在第一线。billContactId
被分配给drpDwnListBillContact的selectedvalue属性,同样在第二行regContactId被分配给DRpDwnStRegContact的selectedvalue属性。但当它被分配给第一个下拉列表(drpDwnListBillContact(时,所选值也被设置为regContactId。为什么第二行代码会影响第一行?
我找到了问题和解决方案。
在FillDropDowns方法中,我只创建了一个ListItem并将其添加到每个下拉列表中,因此当我更改下拉列表selectedvalue属性时,它会更改列表项,所有下拉列表的列表项也会更改。现在我为每个下拉列表创建了单独的ListItem对象,问题就解决了。
旧代码
foreach (string[] contactData in data)
{
ListItem li = new ListItem(contactData[0], contactData[1]);
drpDwnLstRegContact.Items.Add(li);
drpDwnLstTechContact.Items.Add(li);
drpDwnLstBillContact.Items.Add(li);
}
新代码
foreach (string[] contactData in data)
{
ListItem li = new ListItem(contactData[0], contactData[1]);
ListItem li1 = new ListItem(contactData[0], contactData[1]);
ListItem li2 = new ListItem(contactData[0], contactData[1]);
drpDwnLstRegContact.Items.Add(li);
drpDwnLstTechContact.Items.Add(li1);
drpDwnLstBillContact.Items.Add(li2);
}
它不会影响第一个;下拉列表是原子的,我以前从未听说过这个问题。你确定代码中的其他地方没有将控件重新分配给其他值吗?
我不清楚出了什么问题。然而,我猜你在每个Page.Load
事件中都填写了DropDownList
,这使得第一个项目总是被选中。
在Page.Load
处理程序上尝试以下操作:
if (!Page.IsPostBack)
{
FillDropDownList();
}
这会有所帮助。(不要问为什么…(
drpDwnLstBillContact.SelectedIndex = -1;
drpDwnLstBillContact.SelectedIndex =
drpDwnLstBillContact.Items.IndexOf(drpDwnLstBillContact.Items.
FindByValue(billContactId.ToString()));
drpDwnLstRegContact.SelectedIndex = -1;
drpDwnLstRegContact.SelectedIndex =
drpDwnLstRegContact.Items.IndexOf(drpDwnLstRegContact.Items.
FindByValue(regContactId.ToString()));
drpDwnLstTechContact.SelectedIndex = -1;
drpDwnLstTechContact.SelectedIndex =
drpDwnLstTechContact.Items.IndexOf(drpDwnLstTechContact.Items.
FindByValue(techContactId.ToString()));