Я пытаюсь изменить приложение, созданное в asp. net 2.0 / 3.5. В одном столбце gridview есть поле шаблона с раскрывающимся списком внутри:
<asp:TemplateField HeaderText="Title">
<ItemTemplate>
<asp:DropDownList ID="ddl1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="My_Command"></asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
Я устанавливаю выбранный элемент раскрывающегося списка в одну строку, но это вызывает выбор элемента во всех строках (раскрывающиеся списки). Я не знаю причину. Я попытался сделать установку в RowDataBound и DataBound gridview, а также в событии страницы LoadComplete. Во всех случаях - один и тот же результат. Вот пример сетки данных DataBound:
Protected Sub gv_DataBound(sender As Object, e As System.EventArgs) Handles gv.DataBound
Dim r1 As GridViewRow
If gv.Rows.Count > 0 Then
For Each r1 In gv.Rows
Dim ddl1 As DropDownList = CType(r1.Cells(5).FindControl("ddl1"), DropDownList)
If r1.RowIndex = 5 Then
ddl1.SelectedIndex = 5
End If
Next
End If
End Sub
Результат:
Выбранный индекс должен быть только для одной строки с индексом = 5. Я хотел бы добавить, что для этого вида сетки есть аналогичные функции для других элементов управления в виде сетки, таких как Labels или ImageButton, и все отлично работает в каждой строке. У меня проблема только с выпадающим списком.