如何在子更新面板中触发更新进度?

时间:2013-01-23 05:51:39

标签: asp.net .net ajax updatepanel

我有嵌套的更新面板,两者都有自己的更新进度。现在,当我单击子更新面板内的按钮时,也会触发父项的更新进度。

如何解决这个问题?

<asp:UpdatePanel ID="UpdatePanelParent" runat="server">
        <ContentTemplate>
            ...
            ... some controls
            ...
            <asp:UpdatePanel ID="UpdatePanelChild" runat="server" >
                <ContentTemplate>
                    ...
                    ... some controls
                </ContentTemplate>
            </asp:UpdatePanel>

            <asp:UpdateProgress ID="UpdateProgressChild" runat="server" AssociatedUpdatePanelID="UpdatePanelChild" DisplayAfter="0">
                <ProgressTemplate>    
                    Updating child...
                </ProgressTemplate>
                </asp:UpdateProgress>


        </ContentTemplate>
</asp:UpdatePanel>    
<asp:UpdateProgress ID="UpdateProgressParent" runat="server" AssociatedUpdatePanelID="UpdatePanelParent" DisplayAfter="0">
    <ProgressTemplate>    
        Updating parent...
    </ProgressTemplate>
</asp:UpdateProgress>

1 个答案:

答案 0 :(得分:0)

我建议您将设计修改为2个单独的更新面板,如下所示,而不是嵌套它们。

<asp:UpdatePanel ID="UpdatePanelParent" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                <asp:Label ID="lblParent" runat="server" Text="Label"></asp:Label>
                <asp:Button ID="btnParent" runat="server" Text="Button" OnClick="btnParent_Click" />
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btnParent" EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>
        <asp:UpdatePanel ID="UpdatePanelChild" runat="server">
            <ContentTemplate>
                <asp:Label ID="lblChild" runat="server" Text="Label"></asp:Label>
                <asp:Button ID="btnChild" runat="server" Text="Button" OnClick="btnChild_Click" />
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:UpdateProgress ID="UpdateProgressChild" runat="server" AssociatedUpdatePanelID="UpdatePanelChild"
            DisplayAfter="0">
            <ProgressTemplate>
                Updating child...
            </ProgressTemplate>
        </asp:UpdateProgress>
        <asp:UpdateProgress ID="UpdateProgressParent" runat="server" AssociatedUpdatePanelID="UpdatePanelParent"
            DisplayAfter="0">
            <ProgressTemplate>
                Updating parent...
            </ProgressTemplate>
        </asp:UpdateProgress>

UpdatePanelParent成为UpdateMode="Conditional"后,只有在控件中指定Trigger并且UpdatePanelChild将始终更新时才会更新。{p>}因此,我希望保持预期的产出。