我有以下页面,我正在绞尽脑汁为什么当我有两个更新面板时,他们都得到回复。我可以告诉因为我有两个用户控件 - 每个面板中有一个它们都会触发页面加载事件,只有左侧面板应该回头并更新自己...或者如果实际上是整个页面,那么更新面板是什么回帖!!!
我在这里缺少什么?
<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>
答案 0 :(得分:1)
您在更新面板中缺少某个属性:
<asp:UpdatePanel runat="server" ID="pnlWizard" UpdateMode="Conditional">
这将使更新面板仅在其某个子控件或其中一个<Triggers>
导致回发时更新。
答案 1 :(得分:1)
首先,您没有指定UpdateMode的UpdatePanels属性,因此默认为Always。这意味着当其中一个面板执行部分回发时,两个面板都将刷新。您需要指定这些属性并将其设置为Conditional。
也就是说,用户控件在每次回发时都会经历Load
阶段,甚至是部分回复,这是完全正常的。整个页面生命周期实际上发生在部分回发期间,就像在完整回发期间一样,但在部分回发期间,只有部分结果页面标记被发送到浏览器。