2010-05-30 63 views
3

我在我的ajax页面有两个更新面板。这是我第一次使用updatepanel,我不知道什么是错的。我认为只有btnFilter的Click事件必须触发第二个更新面板的内容,但是更改组合值(它也隐藏/取消隐藏btnFilter按钮)使第二个更新面板更改内容(至少我看到有时使用萤火虫&第二个更新面板闪烁传输数据)。在线here为什么updatepanel触发另一个更新面板?

<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> 

回答

10

默认情况下,每个UpdatePanel将在每次异步回发期间刷新。

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

+3

+1,我想知道它为什么默认设置为Always。必须与默认情况下EnableViewState背后的延迟一样。 – 2010-05-30 20:26:05