Nested UpdatePanel: почему ChildrenAsTriggers не работает? - PullRequest
5 голосов
/ 26 мая 2011

Приведен простой пример с двумя вложенными панелями обновления.Они вложены, и у каждого есть метка, которая заполняется текущим временем в коде позади.Я не понимаю, почему свойство ChildrenAsTriggers="true" - на внешней панели обновления не влияет?Когда я нажимаю кнопку «Обновить вложенную панель», время в родительской панели обновления не обновляется.Но насколько я понимаю свойство, оно должно быть:

<asp:ScriptManager ID="ScriptManager1" runat="server" 
    onasyncpostbackerror="ScriptManager1_AsyncPostBackError">
</asp:ScriptManager>

<asp:Button ID="ButtonUpdate" runat="server" Text="Update Panel 1"
    style="margin-top: 15px" onclick="ButtonUpdate_Click" />
<asp:Button ID="ButtonUpdateNestedPanel" runat="server" Text="Update Nested Panel"
    style="margin-top: 15px" onclick="ButtonUpdateNestedPanel_Click" />

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ButtonUpdate" EventName="Click" />
    </Triggers>
    <ContentTemplate>
        <asp:Label ID="Label1" runat="server" />

        <asp:UpdatePanel ID="UpdatePanelNested" runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="ButtonUpdateNestedPanel" EventName="Click" />
            </Triggers>
            <ContentTemplate>
                <asp:Label ID="LabelNested" runat="server" />
            </ContentTemplate>
        </asp:UpdatePanel>

    </ContentTemplate>
</asp:UpdatePanel>

Спасибо за любые чаевые!sl3dg3

ps: код:

protected void ButtonUpdate_Click(object sender, EventArgs e)
{
    LabelNested.Text = DateTime.Now.ToString();
    Label1.Text = DateTime.Now.ToString();
}
protected void ButtonUpdateNestedPanel_Click(object sender, EventArgs e)
{
    LabelNested.Text = DateTime.Now.ToString();
    Label1.Text = DateTime.Now.ToString();
}

Ответы [ 3 ]

0 голосов
/ 04 ноября 2014

Я считаю, что для того, чтобы увидеть желаемый эффект в действии, вы должны добавить свои кнопки как дочерние элементы в шаблон контента. Свойство ChildrenAsTriggers применяется только к прямым потомкам блока ContentTemplate.

0 голосов
/ 03 марта 2016

ChildrenAsTriggers = "true" Установите для свойства ChildrenAsTriggers значение true, если вы хотите, чтобы обратные передачи от непосредственных дочерних элементов управления элемента управления UpdatePanel вызывали обновление содержимого панели.Дочерние элементы управления вложенных элементов управления UpdatePanel не будут вызывать обновление содержимого родительского элемента управления UpdatePanel, если вы явно не вызовете метод Update или не определите дочерние элементы управления как триггеры.

0 голосов
/ 26 мая 2011

Когда для свойства ChildrenAsTriggers установлено значение true, а любой дочерний элемент управления UpdatePanel вызывает обратную передачу. Дочерние элементы управления вложенных элементов управления UpdatePanel не вызывают обновления внешнего элемента управления UpdatePanel, если они явно не определены как триггеры для родительской панели. http://forums.asp.net/t/1422425.aspx/1

и это должно быть похоже ...

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="ButtonUpdate" EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="ButtonUpdateNestedPanel" EventName="Click" />
        </Triggers>
......   
......
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...