简体   繁体   中英

Nested UpdatePanel refresh parent

I have a case that I'm using an update panel that when updated it will load a user control containing a child update panel, and its code is as follows:

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

In the code behind I got an object then use the Update method to refresh the parent update panel

Then It' should have my user control filled with data in the user control I have an update panel also like:

<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>

When I click on the link button the full page reloaded even the parent and my user control disappered as it not in the page direct and if I click on the normal button nothing done ! didn't go to the update panel on load event nor the button click event !

Any idea why this action done ! I need when click on button to change some values or save values to database so I need to go throw the server side code without post back the page

You have to load every time usercontrol on page_init or page_load. You can use MultiView to achieve your goal.

You can also use Events and delegate and call custom event and bind parent control after click on child panel button.

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

{

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

public void CallEvent()

{

//Load Parent Control

}

**//On User Control Behind Code**

public delegate void CallfromOtherUserControl();

public event CallfromOtherUserControl EventCallfromOtherUserControl;

protected void Button1_Click(object sender, EventArgs e)

{

if (EventCallfromOtherUserControl != null)

{

    EventCallfromOtherUserControl();

}

   }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM