2010-11-16 40 views
1

我有下面的頁面,我正在絞盡腦汁,爲什麼當我有兩個更新面板他們都得到後貼。我可以告訴因爲我有兩個用戶控件 - 每個面板都有一個,當只有左側面板應該回退並更新自身時,它們都會觸發頁面加載事件...或者如果在實際整個頁面中更新面板,張貼回來!2更新面板總是發回

我在這裏失蹤了什麼?

<asp:Content ID="StyleContent" ContentPlaceHolderID="Style" runat="server"> 
<link href="../Styles/ReportWizard.css" rel="stylesheet" type="text/css" /> 


<div class="clearFix"></div> 

<div class="wizardContainer"> 
<asp:UpdatePanel runat="server" ID="pnlWizard"> 
    <ContentTemplate> 
     <table> 
      <tr> 
       <td> 
        <asp:Panel runat="server" ID="pnlContainer" CssClass="leftWindow" /> 
       </td> 
      </tr> 
      <tr><td> 
       <input type="hidden" name="rwReport" id="rwReport" /> 
       <input type="hidden" name="rwProject" id="rwProject" /> 
       <input type="hidden" name="rwStakeholder" id="rwStakeholder" /> 
       <input type="hidden" name="rwStakeholderNames" id="rwStakeholderNames" /> 
       <input type="hidden" name="rwMilestone" id="rwMilestone"/></td> 
      </tr> 
      <tr> 
       <td align="right"> 
        <asp:Button runat="server" ID="cbPrev" Text="Previous" CssClass="rwButton" OnClick="cbPrev_Click" OnClientClick="return updateBC('bwd');" /> 
        <asp:Button runat="server" ID="cbNext" Text="Next" cssClass="rwButton" OnClick="cbNext_Click" /> 
       </td> 
      </tr> 
     </table> 
    </ContentTemplate> 
</asp:UpdatePanel> 

回答

1

首先,您不指定UpdatePanelsUpdateMode屬性,因此它們默認爲Always。這意味着當其中一個執行部分回發時,兩個面板都會刷新。您需要指定這些屬性並將它們設置爲Conditional

也就是說,兩個用戶控件在每次回發時都會經過Load階段,甚至是部分回覆階段,這是完全正常的。整個頁面生命週期實際上發生在部分回發期間,就像它在完整回發期間一樣,但在部分回發期間,只有部分生成的頁面標記被髮送到瀏覽器。

1

你缺少更新面板中的一個屬性:

<asp:UpdatePanel runat="server" ID="pnlWizard" UpdateMode="Conditional"> 

這將使更新面板僅更新如果其子控件之一或其<Triggers>之一引起回發。

+0

對不起,我沒有發佈最新的代碼,它已經有條不紊了。這兩個面板用戶控件執行他們的生命週期,或者應該只有嚮導控件的生命週期觸發......我可能正在閱讀到這一點。 – kacalapy 2010-11-16 20:07:10