0

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

如何解决这个问题?

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

1 回答 1

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>

由于UpdatePanelParentis made UpdateMode="Conditional",它只有在Trigger从控件中指定时才会更新,并且UpdatePanelChild会一直更新。因此,我希望保持预期的输出。

于 2013-01-23T06:20:38.263 回答