footleg

导航

UpdatePanel的各种情况

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 控件可以嵌套如果父面板被刷新,则所有嵌套的面板都会刷新如果子面板被刷新,则仅该子面板会更新

posted on 2009-08-25 20:44  迷途  阅读(334)  评论(0编辑  收藏  举报