2016-01-28 4 views
0

У меня есть CheckBoxList в Repeater, а код у меня есть Dynamic dropdownlist in repeater, ASP.NET.Динамический флажок в репитере, ASP.NET

Если это сделать:

<asp:CheckBoxList ID="chklWorkType" runat="server" OnDataBinding="chklWorkType_DataBinding"></asp:CheckBoxList> 


protected void chklWorkType_DataBinding(object sender, System.EventArgs e) 
{ 
    CheckBoxList chk = (CheckBoxList)(sender); 

    chk.Items.Add(new ListItem("nem 1", "1")); 
    chk.Items.Add(new ListItem("num 2", "2")); 

    chk.SelectedValue = chk.DataValueField; 
} 

Это мое сообщение об ошибке:

System.ArgumentOutOfRangeException: 'chklWorkType' имеет SelectedValue, который является недействительным, поскольку он не существует в списке предметов.

ответ

2

DataValueField получает или задает поле источника данных, которое предоставляет значение каждого элемента списка. Поэтому обычно имя столбца или что-то в этом роде. Но вы используете это имя как SelectedValue, которого нет, потому что вы его не изучили, так что это String.Empty.

Вы можете использовать это, если вы хотите, чтобы первый элемент должен быть выбран:

chk.SelectedValue = "1"; 

Это значение первого ListItem (new ListItem("nem 1", "1")).

Конечно, вы можете также использовать SelectedIndex:

chk.SelectedIndex = 0; 
+0

Спасибо, я понимаю, что вы имеете в виду. Исправлена ​​ошибка. – Farzaneh

+0

@Farzaneh: добро пожаловать –