2012-05-24 169 views
2

看起来,当多个UpdatePanels在单个页面上时,任何时候在一个页面上发生asyncPostBack,所有其他页面将重新加载它们的html。有没有解决的办法?在单个页面上使用多个UpdatePanel而不会相互干扰

Example.aspx

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <div style="border: 1px solid black;"> 
      <asp:TextBox runat="server" ID="txtTEST1" /> 
      <asp:Label runat="server" ID="lblTEST1" /> 
      <asp:Button runat="server" ID="btnTEST1" Text="AsyncPostBack1" /> 
      <div onclick="this.innerHTML='Wooo!'">Click Me - UpdatePanel1</div> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

<div onclick="this.innerHTML='Wooo!'" style="padding: 1em;">Click Me. I'm not part of an Update Panel</div> 

<asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
    <ContentTemplate> 
     <div style="border: 1px solid black;"> 
      <asp:TextBox runat="server" ID="TextBox1" /> 
      <asp:Label runat="server" ID="Label1" /> 
      <asp:Button runat="server" ID="Button1" Text="AsyncPostBack2" /> 
      <div onclick="this.innerHTML='Wooo!'">Click Me - UpdatePanel2</div> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

Example.aspx.vb

Protected Sub btnTEST1_Click(sender As Object, e As EventArgs) Handles btnTEST1.Click 
    lblTEST1.Text = "Refreshed at " & DateTime.Now.ToString() 
End Sub 

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Label1.Text = "Refreshed at " & DateTime.Now.ToString() 
End Sub 

测试问题

  1. 用“Click Me”文本点击所有3个divs,以便在UpdatePanels内部和外部更改HTML。
  2. 单击标有“AsyncPostBack”的按钮之一。无论点击哪一个,UpdatePanels都会将其HTML重新放置并替换,如UpdatePanels中的2个div所示,重置为其原始文本。

那么请问,有没有可能具有相同的页面上有多个UpdatePanel的不引起对方重新呈现每当其中一人有一个asyncPostBack事件。

回答

1

尝试添加模式以更新面板标记。如果模式没有给出默认模式总是。如果UpdateMode属性为Always,那么UpdatePanel控件的内容将在页面上任何位置发起的每次回传中更新。 Microsoft documentation about UpdateMode

<asp:UpdatePanel ID="BugsListUpdatePanel" runat="server" UpdateMode="Conditional">