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。为什么第二行代码会影响第一行?

Dropdown SelectedValue更改不相关的属性

我找到了问题和解决方案。

在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()));