2010-11-05 31 views
1

我有一个.ascx控件内的gridview,它被动态地嵌入到另一个.ascx控件中,然后由一个web窗体调用。 GridView最初会绑定,但是当触发任何分页/排序/命令事件时,我无法在事件内部获得任何断点来启动。另外,当我查看现在空白页面中的代码隐藏时,我看到旧数据在那里。Gridview排序和分页事件没有在嵌入式.ascx控件中触发

有什么想法到底是怎么回事?为了启发,摘录了带有控件的.ascx页面。

父的.ascx控制:

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

儿童的.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); 

谢谢!

武神

回答

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

+0

我已经为嵌入的控件分配了ID,但我没有看到行为上的差异。动态生成子.ascx内的控件都不是动态生成的,所以我不知道如何分配一个ID,而不是在标记的属性中。 – Valkyrie 2010-11-08 13:37:39

+0

如果有帮助,以下是我如何将.ascx控件附加到占位符控件:Control ctrlAddAdj = LoadControl(“AddAdjustments.ascx”); ctrlAddAdj.ID =“ucAddAdj”; phControl.Controls.Clear(); phControl.Controls.Add(ctrlAddAdj); – Valkyrie 2010-11-08 13:53:04

+0

我也尝试将.ascx控件直接附加到.aspx页面上的占位符,而不是父级.ascx页面,我仍然看到相同的行为。 – Valkyrie 2010-11-08 13:54:35

相关问题