2010-08-15 4 views
1

У меня есть ASP.NET 4 WebForm с 4 выпадающими списками в таблице.Change SelectedIndex из 1 DropDown changes SelectedIndex других DropDownLists

<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> 

В коде позади я загружаю эти предметы, чтобы они все совпадали. Затем я извлекаю данные из базы данных и вызываю метод для каждой записи db, чтобы установить выбранный индекс раскрывающегося списка.

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

Пошаговое отладчик записи являются правильными и DropDownList является правильным в методе SetDropDownValue.

Как только dl.SelectedIndex = dl.Items.IndexOf (li);, все предыдущие списки dropdownlists, переданные методу, также имеют обновленный индекс. Поэтому, когда выбранный индекс 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); 
... 
Смежные вопросы