Gridview排序和分页事件不会在嵌入式.ascx控件中触发

时间:2010-11-05 17:12:22

标签: c# asp.net

我有一个在.ascx控件中的gridview,它动态地嵌入到另一个.ascx控件中,然后由Web表单调用。 gridview最初将绑定,但是当触发任何分页/排序/命令事件时,我无法在事件中获得任何断点。另外,当我查看现在空白页面中的代码隐藏时,我看到旧数据就在那里。

知道这里到底发生了什么吗?对于启发,带有控件的.ascx页面被摘录。

父.ascx控制:

<asp:ScriptManager ID="smIndex" runat="server" EnablePartialRendering="true" EnableScriptLocalization="true" EnableScriptGlobalization="true" />

                  

Child .ascx控制:

<asp:UpdatePanel ID="upAddAdj" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
<ContentTemplate>
    <asp:GridView ID="gvAddAdjVenList" runat="server" AllowPaging="true" AllowSorting="true" Width="100%" AutoGenerateColumns="false" Font-Size="9px" Font-Names="Verdana" PageSize="10" EnableSortingAndPagingCallbacks="false" DataKeyNames="ID" PagerSettings-Mode="NumericFirstLast" OnRowDataBound="gvAddAdjVenList_RowDataBound" Visible="true">

在child.ascx代码隐藏中:

gvAddAdjVenList.DataBind();
gvAddAdjVenList.Sorting += new GridViewSortEventHandler(gvAddAdjVenList_Sorting);
gvAddAdjVenList.PageIndexChanging += new GridViewPageEventHandler(gvAddAdjVenList_PageIndexChanging);

谢谢!

武神

1 个答案:

答案 0 :(得分:0)

如果您将子控件“动态嵌入”C#中的另一个控件,请确保为子控件分配ID:

gvAddAdjVenList.DataBind();      
gvAddAdjVenList.Sorting += new GridViewSortEventHandler(gvAddAdjVenList_Sorting);      
gvAddAdjVenList.PageIndexChanging += new GridViewPageEventHandler(gvAddAdjVenList_PageIndexChanging); 

gvAddAdjVenList.ID = "gvAddAdjVenList"; // Make sure you do this
parentControl.Controls.Add(gvAddAdjVenList);

确保其事件可以正确连接。

以前发现过here