【问题标题】:How can I prevent all update panels reloading when I click a button in one of them?当我单击其中一个按钮时,如何防止所有更新面板重新加载?
【发布时间】:2013-02-22 12:19:50
【问题描述】:

我有一个带有两个更新面板的网络表单:

<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release">
    </asp:ScriptManager>

<p>
    <asp:UpdatePanel ID="upl1" runat="server">
        <ContentTemplate>
            <asp:Button runat="server" ID="btn1" Text="Button1" />
        </ContentTemplate>
    </asp:UpdatePanel>

    <asp:UpdatePanel ID="upl2" runat="server">
        <ContentTemplate>
            <asp:Button runat="server" id="btn2" Text="Button2" />
        </ContentTemplate>
    </asp:UpdatePanel>
</p>

如果我点击btn1,则会触发upl2的加载事件,以及upl1

我希望只加载 upl1,因为这是包含按钮的更新面板。

为什么没有发生这种情况,我怎样才能让它发生?

【问题讨论】:

标签: asp.net vb.net postback updatepanel


【解决方案1】:

我在使用更新面板时经常使用的一种做法是设置属性:

ChildrenAsTriggers="false" UpdateMode="Conditional"

仅在我需要时刷新更新面板:

protected void btn1_Click(object sender, EventArgs e)
{
    // some logic
    // ....
    upl1.Update();
}

尝试应用这些属性,看看它是否能解决您的问题。

【讨论】:

  • 对不起。每次点击按钮时,两个上传面板都会重新加载。
  • 这两个UpdatePanel不是在另一个UpdatePanel里面吗?
  • 他们不应该。但是当存在嵌套的 UpdatePanel 并且父级配置为 UpdateMode="Always" 时会发生这种情况。
【解决方案2】:

我在按钮触发UpdatePanel 时遇到了类似问题,使用ChildrenAsTriggers="false" UpdateMode="Conditional" 没有帮助。

我最终使用以下命令强制按钮执行常规回发:

 ScriptManager1.RegisterPostBackControl(btn1);

【讨论】:

    猜你喜欢
    • 2021-03-01
    • 2012-03-21
    • 2012-12-09
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 2011-07-21
    相关资源
    最近更新 更多