2010-09-18 103 views
1

我有两个嵌套的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.How我可以这样做吗?我的代码有什么问题? 预先感谢您

回答

1

ChildrenAsTriggers="false",然后在每个单独的UpdatePanel 使用<triggers>标签(我通常把它放在右下方我 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> 
+0

不要忘了你可以调用面板中的Refresh()方法... – jcolebrand 2010-09-19 11:18:48

0

@sohren

你可能需要在某些时候解锁界面。你可以使用pageLoad()函数来达到这个目的。如果您的AJAX请求在阻止UI后成功运行,则在收到响应并更新页面时将调用pageLoad()函数。这是您可以取消阻止用户界面的地方。

+0

???解除屏蔽用户界面?你在说什么?问题在于他使用的是嵌套更新面板,而不是指定哪一个面板是父级与子级。因此,根据上面的答案,您需要专门将ChildrenAsTrigger设置为false。 – Fandango68 2016-07-06 01:13:16