ASP.Net 多个更新面板在不应该更新时进行更新
我在网页上有一些更新面板全部设置为 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>
为什么所有不应该更新的更新面板都更新了?
I have some Update Panels on a webpage all set to UpdateMode="Conditional", however when the AsyncPostBackTrigger on one of the Update Panels is triggered, all of the Update Panels refresh.
The following is one of the update panel HTML markup:
<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>
Why are all of the updatepanels updating when they shouldnt?
在您发布的代码中,只有一个
UpdatePanel
。但是,请注意 ChildrenAsTriggers 属性 默认设置为
true
,因此将自动为该控件内的每个控件添加AsyncPostBackTrigger
更新面板
。所以我要尝试的第一件事是将其设置为 false :Within the code you post, there is only one
UpdatePanel
.However, please note than the ChildrenAsTriggers Property is set to
true
by default, so aAsyncPostBackTrigger
will be added automatically for every control that is inside theUpdatePanel
. So first thing I would try is to set it tofalse
: