2014-06-09 100 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中,他忘了包含哪些控制誰觸發更新?這是不可能的,因爲當他試圖打開頁面時他會得到例外。 –