У меня есть ASP.NET 4 WebForm с 4 раскрывающимися списками в таблице.
<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.