Вложенный родительский элемент обновления UpdatePanel - PullRequest
0 голосов
/ 10 декабря 2011

У меня есть случай, когда я использую панель обновления, которая при обновлении загружает пользовательский элемент управления, содержащий дочернюю панель обновления, и его код выглядит следующим образом:

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

Когда я нажимаю на кнопку ссылки, полная страница перезагружается, даже родитель и мой пользовательский элемент управления исчезают, поскольку он не отображается непосредственно на странице, и если я нажимаю на обычную кнопку, ничего не происходит!не переходил ни на панель обновления ни по событию загрузки, ни по событию нажатия кнопки!

Есть идеи, почему это действие выполнено!Мне нужно при нажатии на кнопку изменить некоторые значения или сохранить значения в базе данных, поэтому мне нужно перебросить код на стороне сервера без обратной отправки страницы

1 Ответ

1 голос
/ 10 декабря 2011

Вы должны загружать каждый раз usercontrol на page_init или page_load. Вы можете использовать MultiView для достижения своей цели.

Вы также можете использовать События и делегировать , вызывать пользовательское событие и привязывать родительский элемент управления после нажатия кнопки дочерней панели.

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

{

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

public void CallEvent()

{

// Загрузка родительского контроля

}

**//On User Control Behind Code**

public delegate void CallfromOtherUserControl();

открытое событие CallfromOtherUserControl EventCallfromOtherUserControl;

protected void Button1_Click(object sender, EventArgs e)

{

if (EventCallfromOtherUserControl! = Null)

{

    EventCallfromOtherUserControl();

}

   }
...