在GridView的HeaderTemplate中,DropDownList的SelectedIndexChanged事件未能触发

3

我正在开发一家招聘网站,目前特别关注工作搜索页面。我将找到的工作返回到一个 DataBound GridView(即 gvwJobs)中,在 HeaderTemplate 中,我有一个名为 ddlSortDirectionDropDownList,用于指定排序执行的方向:

<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 开启。我还创建了一个自定义事件处理程序,在 GridViewDataBound 事件上进行:

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 中更改选择时,ddlSortDirection_SelectedIndexChanged 子过程没有被调用。我可以看到发生了 PostBack,但该方法绝对没有被调用。我尝试创建一个类似于 GridView 外部的 DropDownList,这成功地触发了 SelectedIndexChanged 事件,甚至没有自定义事件处理程序!
请帮助我实现我的目标,在 GridViewHeaderTemplate 中有一个 DropDownList 触发 SelectedIndexChanged 事件。
2个回答

1

将该 GridView 的 EnableViewState 设置为 false。


-1

DropDownList 上设置 runat="server"

例如:

<asp:DropDownList ID="ddlSortDirection" runat="server" AutoPostBack="True" 
            onselectedindexchanged="ddlSortDirection_SelectedIndexChanged">
</asp:DropDownList>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接