2015-05-20 3 views
0

У меня есть массив элементов управления Dropdownlist. Когда я устанавливаю выбранное значение единицы, он устанавливает их для всех из них. Что я делаю не так?Элемент управления Dropdownlist с таким же значением

Dropdownlist[] _ddl = new Dropdownlist[7]; 

for(int i=0;i<=6;i++) 
{ 
    _dll[i] = new Dropdownlist(); 
    _dll[i].ID = "dropdown" + i; 
    _ddl[i].AutoPostBack = true; 
    _ddl[i].Items.AddRange(GradeLevels); 
    if (Grade == "A") 
    _ddl[i].Items.FindByValue("A").Selected = true; 

} 
+2

Вы добавляете тот же пункт для всех выпадающие и выбрав пункт с теми же критериями, что бы выбрать тот же пункт для всех выпадающего списка. также вы зацикливаете индекс от 0 до 6, что означает, что у вас должен быть массив размером 7, но у вас есть размер 6, поэтому вы должны получить индекс из связанного исключения – Adil

+0

ok. Как это исправить. BTW Я редактирую код, чтобы сделать его правильным. –

+0

Непонятно, что индекс того, что вы хотите установить – Adil

ответ

0

Попробуйте это:

Dropdownlist[] _ddl = new Dropdownlist[6]; 

    for(int i = 0; i < 6; i++) 
    { 
     _dll[i] = new Dropdownlist(); 
     _dll[i].ID = "dropdown" + i; 
     _ddl[i].AutoPostBack = true; 
     _ddl[i].Items.AddRange(GradeLevels);  
    } 

    // set the selected item in the first list 
    if (Grade == "A") 
     _ddl[0].Items.FindByValue("A").Selected = true; 
+0

Как это отличается от моего кода? –

+0

Это работает? (Я исправил переменную цикла и переместил настройку выбранного элемента за пределы цикла) –

0

Вы должны создать клон копии GradeLevels объекта и добавить к каждому меню списка другую копию этого объекта.

1

Я предлагаю вам использовать

String Grade = "A"; 
    string[] GradeLevels = new string[] { "A", "B", "C" }; 
    DropDownList _ddl = new DropDownList(); 
    _ddl.AutoPostBack=true; 
    for (int i = 0; i < GradeLevels.Length; i++) 
    { 
     _ddl.Items.Add(new ListItem(GradeLevels[i], GradeLevels[i])); 
    } 
     _ddl.Items.FindByValue(Grade).Selected = true; 
    PlaceHolder1.Controls.Add(_ddl); 
Смежные вопросы