为什么updatepanel会触发另一个updatepanel?

时间:2010-05-30 20:22:05

标签: c# asp.net ajax asp.net-ajax

我的ajax页面上有两个更新面板。这是我第一次使用updatepanel而且我不知道出了什么问题。我认为只有btnFilter的Click事件必须触发第二个更新面板的内容,但更改组合值(也隐藏/取消隐藏btnFilter按钮)会使第二个更新面板更改内容(至少我看到传输的数据有时使用firebug和第二个updatepanel闪烁)。在线here

<asp:UpdatePanel ID="upComparison" runat="server">
    <ContentTemplate>
        Brand:
        <asp:DropDownList ID="ddlBrands" runat="server" AutoPostBack="true"
        OnSelectedIndexChanged="ddlBrands_SelectedIndexChanged"
        AppendDataBoundItems="true">
            <asp:ListItem Value="" Text="Please select a brand..." />
        </asp:DropDownList>
        <asp:Panel ID="pModels" runat="server" Visible="false">
            Model:
            <asp:DropDownList ID="ddlModels" runat="server" AutoPostBack="true"
            OnSelectedIndexChanged="ddlModels_SelectedIndexChanged" />
        </asp:Panel>
        <asp:Panel ID="pButton" runat="server" Visible="false">
            <asp:UpdateProgress ID="upMain" runat="server" DisplayAfter="100">
                <ProgressTemplate><img src="/Assets/Images/loader.gif" />
                </ProgressTemplate>
            </asp:UpdateProgress>
            <asp:Button ID="btnFilter" runat="server" Text="Filter" 
            OnClick="btnFilter_Click" />
        </asp:Panel>
    </ContentTemplate>
</asp:UpdatePanel>    
<asp:UpdatePanel ID="upList" runat="server">
    <ContentTemplate>
        <asp:Repeater ID="rProducts" runat="server">
            <ItemTemplate>some code here</ItemTemplate>
        </asp:Repeater>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnFilter" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

1 个答案:

答案 0 :(得分:10)

默认情况下,每次异步回发时都会刷新每个UpdatePanel

要更改此行为,请将UpdateMode property设置为Conditional