【问题标题】:Using multiple UpdatePanels on a single page without interfering with each other在单个页面上使用多个 UpdatePanel,而不会相互干扰
【发布时间】:2012-05-24 16:30:16
【问题描述】:

似乎当多个 UpdatePanels 在一个页面上时,只要一个 asyncPostBack 发生在一个页面上,所有其他人都会重新加载其 html。有没有办法解决这个问题?

例子

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 个 div,以便在 UpdatePanel 内部和外部更改 HTML。
  2. 单击标有“AsyncPostBack”的按钮之一。无论单击哪一个,两个 UpdatePanel 都将重新呈现和替换其 HTML,正如 UpdatePanel 中的 2 个 div 重置为原始文本所看到的那样。

所以我问,是否有可能在同一页面上有多个 UpdatePanel,每次其中一个发生 asyncPostBack 事件时不会导致彼此重新呈现。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    是的

    1. 设置更新模式=条件
    2. 提供将触发更新的触发器。这是一个示例的链接。 (在谷歌上排名第一)http://ajax.net-tutorials.com/controls/updatepanel-control/

    【讨论】:

      【解决方案2】:

      尝试添加模式来更新面板标签。如果模式未给出默认模式,则始终为默认模式。如果 UpdateMode 属性为 Always,则 UpdatePanel 控件的内容会在每次来自页面上任何位置的回发时更新。 Microsoft documentation about UpdateMode

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

      【讨论】:

        猜你喜欢
        • 2013-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多