2010-08-15 59 views
1

我有一个ASP.NET 4 WebForm与4下拉表中。更改SelectedIndex of 1 DropDown更改其他DropDownLists SelectedIndex

<table> 
    <tr><td><asp:DropDownList ID='dd1' runat='server' /></td></tr> 
    <tr><td><asp:DropDownList ID='dd2' runat='server' /></td></tr> 
    <tr><td><asp:DropDownList ID='dd3' runat='server' /></td></tr> 
    <tr><td><asp:DropDownList ID='dd4' runat='server' /></td></tr> 
</table> 

在后面的代码中,我加载这些项目,使他们都匹配。然后,我从数据库中检索数据,并调用每个数据库记录的方法来设置下拉列表的选定索引。

int i = 0; 
foreach (var rec in dataRecords) { 
    switch (i) { 
     case 0: 
     SetDropDownValue(rec, dd1); 
     break; 
     case 1: 
     SetDropDownValue(rec, dd2); 
     break; 
     case 2: 
     SetDropDownValue(rec, dd3); 
     break; 
    case 3: ... 
    case 4: ... 
    default: ... 
} 
i++; 

private void SetDropDownValue(DBRecord selectedRecord, DropDownList dl) 
{ 
    string importantVal = selectedRecord.Field; 
    var li = dl.Items.FindByValue(importanVal); 
    dl.SelectedIndex = dl.Items.IndexOf(li); 
} 

单步调试记录是正确的,下拉列表在SetDropDownValue方法中是正确的。

只要dl.SelectedIndex = dl.Items.IndexOf(li);执行,所有先前的下拉列表'传递给该方法的选定索引也被更新。因此,当ddl2的选定索引更改时,ddl1将更改为ddl2的新选定索引。当ddl3更新时,ddl1 & ddl2被更新。当ddl4被设置时,ddl1,ddl2和ddl3选择的索引被更新。

回答

1

当我装的下拉菜单我在做这样的事情:

foreach (var dropDownOption in DropDownOptions) { 
    ListItem li = new ListItem(dropDownOption.ValueField); 
    dd1.Items.Add(li); 
    dd2.Items.Add(li); 
    ... 
} 

因此,所有的listItems中,其中相同的每个列表。

要解决我必须创建一个新的ListItem我想要添加到每个下拉列表。

ListItem li = new ListItem(dropDownOption.ValueField); 
dd1.Items.Add(li); 
li = new ListItem(dropDownOption.ValueField); 
dd2.Items.Add(li); 
... 
相关问题