如果每个子控件都设置为条件,为什么子控件的子更新面板会更新父级和子级?

时间:2009-07-24 15:36:13

标签: asp.net ajax updatepanel

我们有一个具有3个主要UpdatePanel的结构,每个UpdatePanel都有几个嵌套的UpdatePanel(但只有一个嵌套级别。)所有面板都设置为条件,ChildrenAsTriggers设置为false,所以看起来大致如下:

<asp:UpdatePanel ChildrenAsTriggers="false" OnLoad="Update_OnLoad" 
    ID="updateCol2" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:UpdatePanel ChildrenAsTriggers="false" UpdateMode="Conditional" 
            ID="updateFeed" runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
            </Triggers>
            <ContentTemplate>
                <asp:Button OnClick="function" ID="btnSubmit" runat="server" />
            <ContentTemplate>
         </asp:UpdatePanel>
    </ContentTemplate>
</asp:UpdatePanel>

我希望父更新面板的OnLoad函数永远不会运行,除了实际页面加载,并且按钮的OnClick函数将在每次单击时执行,更新子更新面板。但是,每次单击按钮时都会更新父UpdatePanel,并且子更新面板仅在之后触发(作为父更新面板更新的结果。)

2 个答案:

答案 0 :(得分:3)

父更新面板是否实际更新,即内容是否正在更改?

  

我希望OnLoad   父更新面板的功能   除了在实际上,它永远不会运行   页面加载

这是一个错误但不幸的常见假设。请记住,即使它是异步回发,也会为每个控件执行整个页面和控件生命周期,包括Load和Init。这就像你正常请求页面一样。

不同之处在于它只是UpdatePanel的页面区域才会被更新,而不是整个UI。

有关UpdatePanel如何工作的更多信息,请参见great article on ASP.Net Ajax documentation site

答案 1 :(得分:0)

准确使用pschorf的粘贴代码(另一个updatepanel中包含的一个updatepanel),可能会在触发子项时触发父更新面板?

仅将子更新面板解压缩为不刷新父更新面板的整个区域,并且仅刷新子更新面板区域。

草稿代码示例:

<UPanel1 ChildrenAsTriggers="false" UpdateMode="Conditional">    
 <UPanel2 ChildrenAsTriggers="false" UpdateMode="Conditional">    
   <asp:Button onclick="..." />    
 </UPanel2>    
 Other UPanel1's content not being refreshed after the UPanel2's button click
</UPanel1>

谢谢! (也许womp的帖子回应了我的回答,我误解了)