UpdatePanel的各种情况(分为:按钮和UpdatePanel)
1.按钮的3个位置
1.按钮在所有UpdatePanel外部,刷新整个页面(所有的UpdatePanel都会刷新,不管是否Conditional)
2.按钮在UpdatePanel内部的按钮(会被识别为AsyncPostBack)
1.能够刷新本UpdatePanel(不管UpdateModel为Always还是Conditional)
其中,如果是Conditional,必须ChildrenAsTriggers不为false,为false的情况后面会提到
2.能够刷新其他UpdatePanel(当其UpdateModel为Always)
3.不能够刷新其他UpdatePanel(当其UpdateModel为Conditional)
4.不能够刷新UpdatePanel外的部分
3.按钮在任何位置
1.可以调用一个UpdatePanel的Update()方法(更新其内容)
1.在页面的load事件里
ScriptManager ScriptManager1 = (ScriptManager)Master.FindControl("ScriptManager1");
ScriptManager1.RegisterAsyncPostBackControl(btn_MatchDish);
2.在按钮的事件里直接 UpdatePanel2.Update();(这样就能异步更新UpdatePanel2了)
2.可以显示定义为一个UpdatePanel的触发器(更新其内容)
(即:这个按钮是一个UpdatePanel的ControlId)
2.UpdatePanel(涉及到UpdateModel为Always和Conditional)
1.Always表示网页任何一个地方回发时,都会导致UpdatePanel控件内容更新
包括其他UpdatePanel控件内的控件引发的异步回发
2.Conditional 控件的内容会得到更新:
1.当回发是由该 UpdatePanel 控件的触发器所引起时
2.当您显式调用 UpdatePanel 控件的 Update 方法时
3.当 UpdatePanel 控件嵌套在另一个 UpdatePanel 控件内且父面板发生更新时
4.当 ChildrenAsTriggers 属性,为true时(默认)且该 UpdatePanel 控件的任何子控件导致回发时。
(即:UpdatePanel内部的按钮,能够更新本UpdatePanel)
3.ChildrenAsTriggers
1.为True(默认),如果涉及到ChildrenAsTriggers属性,就意味着要设置为false,否则,不必出现(因为默认True)
所以,一般只讨论ChildrenAsTriggers=false的情况
2.为false(UpdatePanel的UpdateMode属性必须为Conditional)
1.适用情况:具有两个UpdatePanel控件,并且希望来自第一个面板的回发更新第二个的内容,但不更新自己的内容
比如:UpdatePanel_1(ChildrenAsTriggers=false)内有Button1
UpdatePanel_2(ControlId="Button1")
当点Button1的时候,UpdatePanel_2会更新,而UpdatePanel_1不会更新
4.UpdatePanel嵌套
1.如果父面板被刷新(ChildrenAsTriggers=true),则父面板和子面板都会刷新,
如果父面板被刷新(ChildrenAsTriggers=false),则父面板和子面板都不会刷新
2.如果子面板被刷新,则仅该子面板会更新,除非它们被显式定义为父面板的触发器(则父子都会刷新)
(显式为父面板触发器:当子UpdatePanel里的按钮是父UpdatePanel的ControlId)
3.示例下载
4.参考资料
网址:http://msdn.microsoft.com/zh-cn/library/cc295545.aspx
如何刷新 UpdatePanel 控件
以下列表介绍的 UpdatePanel 控件的属性设置决定在部分页呈现过程中面板的内容何时更新:
* 如果 UpdateMode 属性设置为“Always”,则网页的任何地方发生的每个回发都会导致 UpdatePanel 控件内容进行更新其中包括其他 UpdatePanel控件内的控件引发的异步回发,以及不在 UpdatePanel控件内的控件引发的回发
* 如果UpdateMode属性设置为“Conditional”,则当以下其中一项为真时UpdatePanel 控件的内容会得到更新:
* 当回发是由该 UpdatePanel 控件的触发器所引起时
* 当您显式调用 UpdatePanel 控件的 Update 方法时
* 当 UpdatePanel 控件嵌套在另一个 UpdatePanel 控件内且父面板发生更新时
* 当 ChildrenAsTriggers 属性设置为真且该 UpdatePanel 控件的任何子控件导致回发时嵌套的 UpdatePanel 控件的子控件不会导致外部 UpdatePanel 控件发生更新,除非它们被显式定义为父面板的触发器
如果 ChildrenAsTriggers 属性设置为 false 且 UpdateMode 属性设置为“Always”,则会引发异常仅当 UpdateMode 属性设置为“Conditional”时,才能使用 ChildrenAsTriggers 属性
使用嵌套的 UpdatePanel 控件
UpdatePanel 控件可以嵌套如果父面板被刷新,则所有嵌套的面板都会刷新如果子面板被刷新,则仅该子面板会更新