我在网页上有一些所有设置为UpdateMode =“Conditional”的更新面板,但是当触发其中一个更新面板上的AsyncPostBackTrigger时,所有更新面板都会刷新。
以下是更新面板HTML标记之一:
<asp:UpdatePanel ID="pnls1FieldUpdate" runat="server"
UpdateMode="Conditional">
<ContentTemplate>
<table class="FillInGrid" cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:TextBox ID="txtS1ExpDate" runat="server" Width="67px" TabIndex="14"></asp:TextBox>
<asp:ImageButton ID="cmdS1ExpDate" runat="server"
ImageUrl="~/images/calendar.png" TabIndex="15" />
<asp:CalendarExtender ID="CalendarExtender6" runat="server" TargetControlID="txtS1ExpDate" PopupButtonID="cmdS1ExpDate" Format="dd/MM/yyyy">
</asp:CalendarExtender>
</td>
<td>
<asp:DropDownList ID="cboS1ExpenseItem" runat="server" Width="200px"
onselectedindexchanged="cboS1ExpenseItem_SelectedIndexChanged"
AutoPostBack="True" TabIndex="16">
</asp:DropDownList>
</td>
<td>
<asp:TextBox ID="txtS1ExpAmt" runat="server" Width="78px" ontextchanged="txtS1ExpAmt_TextChanged" TabIndex="18" AutoPostBack="True"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="txtS1ExpGST" runat="server" Width="78px" TabIndex="19"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="txtS1ExpOC" runat="server" Width="78px"
ontextchanged="txtS1ExpOC_TextChanged" TabIndex="20" AutoPostBack="True"></asp:TextBox>
</td>
<td>
<asp:Button ID="cmdAddSection1Exp" runat="server" Text="Add" Width="80px"
onclick="cmdAddSection1Exp_Click" TabIndex="21" /></td>
</tr>
<tr>
<td colspan="6">
<table>
<tr>
<td class="HdrGnrl tRt" style="width:105px;">Sub item</td>
<td style="width:220px;">
<asp:DropDownList ID="cboS1ExpenseSubItem" runat="server" Width="200px"
TabIndex="17">
</asp:DropDownList>
</td>
<td style="width:85px;"></td>
<td style="width:85px;"></td>
<td style="width:85px;"></td>
<td style="width:100px;"></td>
</tr>
</table>
</td>
</tr>
</table>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtS1ExpAmt" EventName="TextChanged" />
<asp:AsyncPostBackTrigger ControlID="txtS1ExpOC" EventName="TextChanged" />
<asp:AsyncPostBackTrigger ControlID="cboS1ExpenseItem" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdatePanelAnimationExtender ID="UpdatePanelAnimationExtender4" TargetControlID="pnls1FieldUpdate" runat="server">
<Animations>
<OnUpdating>
<Sequence>
<FadeOut AnimationTarget="pnlExpense" minimumOpacity=".2" />
</Sequence>
</OnUpdating>
<OnUpdated>
<Sequence>
<FadeIn AnimationTarget="pnlExpense" minimumOpacity=".2" />
</Sequence>
</OnUpdated>
</Animations>
</asp:UpdatePanelAnimationExtender>
为什么所有的updatepanel都在不应该更新?
答案 0 :(得分:1)
在您发布的代码中,只有一个UpdatePanel
。
但请注意,默认情况下 ChildrenAsTriggers Property 设置为true
,因此会为每个内部的控件自动添加AsyncPostBackTrigger
UpdatePanel
。所以我首先要尝试将其设置为false
:
<asp:UpdatePanel ID="pnls1FieldUpdate"
runat="server"
UpdateMode="Conditional"
ChildrenAsTriggers="false" >