2010-11-05 30 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

相關問題