Событие DropDownList SelectedIndexChanged не запускается в GridView HeaderTemplate

Сейчас я работаю над сайтом совета по работе и, в частности, страницей поиска работы. Я возвращаю работу, найденную в DataBoundGridView (а именно gvwJobs) и в пределах HeaderTemplate у меня есть DropDownList названный ddlSortDirection который указывает направление, в котором выполняется сортировка:

<asp:DropDownList runat="server" ID="ddlSortDirection" AutoPostBack="true" OnSelectedIndexChanged="ddlSortDirection_SelectedIndexChanged">

    <asp:ListItem Value="DESC">DOWN</asp:ListItem>
    <asp:ListItem Value="ASC">UP</asp:ListItem>

</asp:DropDownList>

Как видите, я гарантировал, что AutoPostBack включен Я также создал собственный обработчик событий на GridView"s DataBound событие как так:

Protected Sub gvwJobs_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvwJobs.RowDataBound

    If e.Row.RowType = DataControlRowType.Header Then

                ddlSortDirection.AutoPostBack = True
                AddHandler ddlSortDirection.SelectedIndexChanged, AddressOf ddlSortDirection_SelectedIndexChanged


     End If

End Sub

Я считаю, что ddlSortDirection_SelectedIndexChanged SubProcedure не вызывается, когда выбор изменяется в ddlSortDirection, Я вижу, что PostBack происходит, но метод точно не вызывается. То, что я пытался сделать, это создать похожий DropDownList за пределами GridView и это успешно вызвало SelectedIndexChanged событие даже без собственного обработчика событий!

Пожалуйста, не могли бы вы помочь мне достичь моей цели DropDownList увольнение SelectedIndexChanged событие, когда в пределах HeaderTemplate из GridView?

2 ответа

Установить EnableViewState этого GridView в ложь

Задавать runat="server" на DropDownList

Например:

<asp:DropDownList ID="ddlSortDirection" runat="server" AutoPostBack="True" 
            onselectedindexchanged="ddlSortDirection_SelectedIndexChanged">
</asp:DropDownList>
Другие вопросы по тегам