ASP.Net Multiple update panels updating when they are not supposed to

随声附和 提交于 2020-01-17 01:15:32

问题


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?


回答1:


Within the code you post, there is only one UpdatePanel.

However, please note than the ChildrenAsTriggers Property is set to true by default, so a AsyncPostBackTrigger will be added automatically for every control that is inside the UpdatePanel. So first thing I would try is to set it to false :

<asp:UpdatePanel ID="pnls1FieldUpdate" 
                 runat="server" 
                 UpdateMode="Conditional"
                 ChildrenAsTriggers="false" >


来源:https://stackoverflow.com/questions/7087724/asp-net-multiple-update-panels-updating-when-they-are-not-supposed-to

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!