我们有一个具有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,并且子更新面板仅在之后触发(作为父更新面板更新的结果。)
答案 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的帖子回应了我的回答,我误解了)