0
votes

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

1
The design of having an UpdatePanel dynamically added to the page sounds tricky. Can you always have the child UpdatePanel there, with the PlaceHolder inside, and add the controls to the PlaceHolder dynamically? - sq33G

1 Answers

1
votes

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();

}

   }