2010-11-16 41 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