Установка выпадающего списка выбранного элемента в одной строке вида сетки приводит к выбору выпадающего списка во всех строках - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь изменить приложение, созданное в 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

Результат:

result Выбранный индекс должен быть только для одной строки с индексом = 5. Я хотел бы добавить, что для этого вида сетки есть аналогичные функции для других элементов управления в виде сетки, таких как Labels или ImageButton, и все отлично работает в каждой строке. У меня проблема только с выпадающим списком.

...