Dropdown SelectedValue Set Problem

时间:2011-06-30 12:16:07

标签: c# asp.net drop-down-menu selectedvalue

 drpDwnLstBillContact.SelectedValue = billContactId.ToString();
 drpDwnLstRegContact.SelectedValue = regContactId.ToString();
 drpDwnLstTechContact.SelectedValue = techContactId.ToString();

大家好,我正在尝试设置下拉列表的选择值属性,但我有一个问题。

变量的值为:

billContactId=786867;
regContactId=3487347;
techContactId=37463;

第一行中的问题是billContactId被分配给第二行的drpDwnLstBillContact的selectedvalue属性regContactId被分配给drpDwnLstRegContact的selectedvalue属性。但是当它被分配给它时,第一个下拉列表(drpDwnLstBillContact)选择的值也被设置为regContactId。我很困惑,为什么第二行代码会影响第一行?

4 个答案:

答案 0 :(得分:3)

我发现了问题和解决方案。

在FillDropDowns方法中,我只创建了一个ListItem并将其添加到每个下拉列表中,因此当我更改下拉列表selectedvalue属性时,它会更改列表项,并且所有下拉列表的listitem也会更改。现在我为每个下拉列表创建了单独的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);
        }

答案 1 :(得分:2)

它不会影响第一个;下拉列表是原子的,我以前从未听说过这个问题。你确定代码中的其他地方没有将控件重新分配给不同的值吗?

答案 2 :(得分:1)

我无法清楚地知道问题所在。不过,我猜您在每个DropDownList事件中填写Page.Load,这使得第一项始终被选中。

Page.Load处理程序上尝试以下操作:

if (!Page.IsPostBack)
{
    FillDropDownList();
}

答案 3 :(得分:1)

这可以提供帮助。 (不要问为什么......)

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