asp.net – 确定哪个UpdatePanel导致部分(异步)PostBack?

前端之家收集整理的这篇文章主要介绍了asp.net – 确定哪个UpdatePanel导致部分(异步)PostBack?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在一个页面中包含两个UpdatePanels,如何知道哪个UpdatePanel导致部分PostBack?

我的意思是在Page_Load事件处理程序中.

这是我的代码

<asp:ScriptManager ID="ScriptManager1" runat="server">
 </asp:ScriptManager>
 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" 
     onprerender="UpdatePanel1_PreRender">
     <ContentTemplate>
         <A:u1 ID="u1" runat="server" />
     </ContentTemplate>
 </asp:UpdatePanel>
 <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" 
     onprerender="UpdatePanel2_PreRender">
     <ContentTemplate>
         <A:u2 ID="u2" runat="server" />
     </ContentTemplate>
 </asp:UpdatePanel>

我尝试过这个代码,但是它并没有起作用!

protected void Page_Load(object sender,EventArgs e)
{
    if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack)
    {
        if (UpdatePanel1.IsInPartialRendering)
        {
            // never enter to here
        }
        if (UpdatePanel2.IsInPartialRendering)
        {
            // neither here
        }
    }
}

任何帮助!

解决方法

您可以使用 UpdatePanel类的 IsInPartialRendering属性来确定特定面板是否导致部分回发:
protected void Page_Render(object sender,EventArgs e)
{
    if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack) {
        if (yourFirstUpdatePanel.IsInPartialRendering) {
            // The first UpdatePanel caused the partial postback.
        } else if (yourSecondUpdatePanel.IsInPartialRendering) {
            // The second UpdatePanel caused the partial postback.
        }
    }
}

编辑:在渲染阶段之前,IsInPartialRendering看起来总是假的.由于您在加载阶段需要该信息,因此无法正常工作.见this bug.

有一个解决方法documented here,其中包括从UpdatePanel派生您自己的类来访问其受保护的RequiresUpdate属性

public class ExtendedUpdatePanel : UpdatePanel
{
    public bool IsUpdating
    {
        get {
            return RequiresUpdate;
        }
    }
}

页面标记中使用ExtendedUpdatePanel替换asp:UpdatePanel之后,上面的代码变成:

protected void Page_Load(object sender,EventArgs e)
{
    if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack) {
        if (yourFirstUpdatePanel.IsUpdating) {
            // The first UpdatePanel caused the partial postback.
        } else if (yourSecondUpdatePanel.IsUpdating) {
            // The second UpdatePanel caused the partial postback.
        }
    }
}
原文链接:https://www.f2er.com/aspnet/249722.html

猜你在找的asp.Net相关文章