【问题标题】:Nested Update Panel Issue嵌套更新面板问题
【发布时间】:2010-09-18 11:11:09
【问题描述】:

我在父面板中有两个嵌套的 UpdatePanle 和一个按钮和一个编辑器,在子面板中有一个 GridView。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Button ID="btn_UsersList" runat="server" 
            OnClick="btn_UsersList_Click" Text="users" />
        <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                <asp:GridView ID="GridView_UsersList" runat="server">
                </asp:GridView>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btn_UsersList" 
                    EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>
        <fckeditorv2:fckeditor id="FCKeditor_Message" runat="server" 
            basepath="~/fckeditor/"></fckeditorv2:fckeditor>
    </ContentTemplate>
</asp:UpdatePanel>

我想在单击按钮时更新子面板,但不更新父 UpdatePanel。我该怎么做?我的代码有什么问题? 提前谢谢你

【问题讨论】:

    标签: asp.net asp.net-ajax


    【解决方案1】:

    设置ChildrenAsTriggers="false",然后在每个单独的UpdatePanel 使用&lt;triggers&gt; 标签(我通常把它放在我的正下方 ContentTemplate) 手动指定哪个控件更新面板 更新。我几乎总是使用它,所以我知道是什么导致了我的 回发,我没有不知道的事情发生。

    例子:

    <UpdatePanel id="Parent" ChildrenAsTriggers="false" UpdateMode="conditional">
        <ContentTemplate>
            <UpdatePanel id="Child" ChildrenAsTriggers="false" UpdateMode="conditional">
                <ContentTemplate>
                    <!-- Content Here -->
                </ContentTemplate>
                <Triggers>
                    <!-- Updates only the child panel -->
                    <asp:AsynchronousPostBackTrigger 
                         ControlID="btnChangeChildPanel" EventName="Click" />
                 </Triggers>
            </UpdatePanel>
            <asp:Button id="btnChangeChildPanel" runat="server"
                OnClick="btnChangeChildPanel_OnClick" />
        </ContentTemplate>
        <Triggers>
            <!-- Add parent triggers here -->
        </Triggers>
    </UpdatePanel>
    

    【讨论】:

      【解决方案2】:

      @sohren

      您可能需要在某些时候解除对 UI 的阻止。您可以为此目的使用pageLoad() 函数。如果您的 AJAX 请求在阻塞 UI 后运行成功,则在收到响应并更新页面时将调用 pageLoad() 函数。您可以在此处解除对 UI 的阻止。

      【讨论】:

      • ???解锁用户界面?你在说什么?问题是他使用的是嵌套更新面板,而不是指定哪个面板是父面板和子面板。因此,根据上面的答案,您需要专门将 ChildrenAsTrigger 设置为 false。
      猜你喜欢
      • 1970-01-01
      • 2014-09-15
      • 2019-05-15
      • 1970-01-01
      • 2011-07-24
      • 2011-09-02
      • 1970-01-01
      相关资源
      最近更新 更多