2014-06-09 62 views
1

我有一个很慢的页面UpdatePanel。它的UpdatePanel被设置为有条件地更新。我面临的问题是UpdatePanel会在客户端呈现时立即执行部分回发。我的问题是:防止UpdatePanel部分回发

  1. 是否有可能防止发生第一次部分回发?
  2. 这是否甚至是良好的做法?为什么或者为什么不?

感谢您的帮助。

标记:

 <asp:UpdatePanel UpdateMode="Conditional" ChildrenAsTriggers="false" runat="server" ID="updatePnlValidationErrors"> 
      <ContentTemplate> 
       <span runat="server" id="validationErrors" class="error"></span> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger EventName="Click" ControlID="btnCompletePurchase" /> 
       <asp:AsyncPostBackTrigger EventName="Checkout_Click" ControlID="checkoutBox" /> 
      </Triggers> 
     </asp:UpdatePanel> 

没有代码直接接触的UpdatePanel。

+0

您是否在页面加载事件中更新了更新面板? –

+0

@DTs不,不在服务器端。我只有两个触发器绑定到它,并且都是按钮上的点击事件。 – khalid13

+0

你如何检查你的更新面板,看看它是否在页面加载回传? –

回答

1

好的,你的代码中的asyncpostbacktrigger没有指向正确的控件我猜,你可能已经将它们仅仅用于演示目的,但它们对于我们的测试至关重要。这里是我最后对你的代码及其结果的完整模拟。

我添加了两个失踪您的更新面板外的AsyncPostBackTriggers的关联控件;

<asp:Button ID="btnCompletePurchase" runat="server" Text="Button" 
      OnClick="btnCompletePurchase_Click" /> 
<asp:CheckBox ID="checkoutBox" runat="server" 
       OnCheckedChanged="checkoutBox_CheckedChanged" /> 

,你的代码看起来像下面的代码:

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

<asp:Button ID="btnCompletePurchase" runat="server" Text="Button" 
      OnClick="btnCompletePurchase_Click" /> 
<asp:CheckBox ID="checkoutBox" runat="server" 
       OnCheckedChanged="checkoutBox_CheckedChanged" /> 
<asp:UpdatePanel UpdateMode="Conditional" ChildrenAsTriggers="false" 
        runat="server" ID="updatePnlValidationErrors"> 
    <ContentTemplate> 
     <span runat="server" id="validationErrors" class="error"></span> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger EventName="Click" 
             ControlID="btnCompletePurchase" /> 
     <asp:AsyncPostBackTrigger EventName="CheckedChanged" 
             ControlID="checkoutBox" /> 
    </Triggers> 
</asp:UpdatePanel> 

这里是第一次Page_Load事件中断点结果:

enter image description here

因此,您可以复制并粘贴此代码以检查结果。

+0

你的观点是,在他的ASPX中,他忘了包含哪些控制谁触发更新?这是不可能的,因为当他试图打开页面时他会得到例外。 –