3

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

<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加载,因为这是包含按钮的更新面板。

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

4

2 回答 2

1

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

ChildrenAsTriggers="假" UpdateMode="条件"

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

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

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

于 2013-02-22T14:04:21.903 回答
0

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

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

 ScriptManager1.RegisterPostBackControl(btn1);
于 2014-05-19T06:41:12.190 回答