2011-12-10 55 views
0

我有我使用的更新面板在更新時它會加載包含子更新面板的用戶控制,並且它的代碼如下的情況:嵌套的UpdatePanel刷新父

<asp:UpdatePanel runat="server" ID="Parent" UpdateMode="Conditional" ChildrenAsTriggers="false" > 
    <ContentTemplate> 
    <asp:PlaceHolder runat="server" ID="ChildUPNL"></asp:PlaceHolder> 
    </ContentTemplate> 
</asp:UpdatePanel> 

在後面的代碼我得到了一個對象,然後用Update方法來刷新父更新面板

那麼它應該有我充滿了用戶控件我有一個更新面板數據 用戶控件也喜歡:

<asp:UpdatePanel runat="server" ID="Child" OnLoad="ChildLoad"> 
        <ContentTemplate> 
         <asp:LinkButton Text="Link button" runat="server" /> 
         <asp:Button Text="Button" runat="server" OnClick="ButtonClick"/> 
        </ContentTemplate> 
       </asp:UpdatePanel> 

當我點擊鏈接按鈕,整個頁面重新加載甚至父母和我的用戶控制消失,因爲它不在頁面直接 ,如果我點擊正常按鈕什麼都沒做! 沒有進入加載事件的更新面板,也沒有按鈕點擊事件!

任何想法爲什麼這個行動完成! 我需要當點擊按鈕來改變一些值或保存到數據庫的值,所以我需要拋出服務器端代碼,而不回發頁面

+0

具有一個UpdatePanel的設計動態地添加到所述頁面的聲音棘手。你可以在那兒總是有孩子的UpdatePanel,裏面有PlaceHolder,並且動態地將控件添加到PlaceHolder中? – sq33G

回答

1

你必須加載每次user_control page_init或page_load。您可以使用MultiView來實現您的目標。

您還可以使用事件和委託並在點擊子面板按鈕後調用自定義事件並綁定父控件。

**//On Page Behind Code** 
protected void Page_Load(object sender, EventArgs e) 

{

UserControl11.EventCallfromOtherUserControl + =新UserControl1.CallfromOtherUserControl(CallEvent); }

public void CallEvent() 

{

//加載家長控制

}

**//On User Control Behind Code** 

public delegate void CallfromOtherUserControl(); 

公共事件CallfromOtherUserControl EventCallfromOtherUserControl;

protected void Button1_Click(object sender, EventArgs e) 

{

如果(EventCallfromOtherUserControl!= NULL)

{

EventCallfromOtherUserControl(); 

}

} 
+0

我不需要更新父項中的任何內容我只是打開孩子,然後在用戶控件中我將對數據做一些更改,然後保存到數據庫從用戶控件不會回到父..父母只有我的訂單列表,當點擊每一個時,我會在用戶控制中獲得它,並獲得選定對象的完整詳細信息,然後執行我的更改並保存 – AshOoO