一、RenderMode属性,值为Block(默认值)为Inline
 在页面中输入以下代码:


<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block">   
             <ContentTemplate>
                RenderMode=Block
             </ContentTemplate>
        </asp:UpdatePanel>
        <hr />
        <asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Inline">
            <ContentTemplate>
                RenderMode=Inline
            </ContentTemplate>
        </asp:UpdatePanel> 

运行后查看网页源代码,会发现以下HTML标记:


<div id="UpdatePanel1">
                RenderMode=Block
 </div>
        <hr />
        <span id="UpdatePanel2">
                RenderMode=Inline
        </span>

这就是这两个值的区别,为Block时输出的容器为<div>,而为Inline时则输出<span>。

二、UpdateMode属性,值为Always(默认值)或Conditional
 作用分别为Always:只要页面有异步回送则该UpdatePanel更新
 Conditional:只有该UpdatePanel控件中的控件产生的异步回送,才更新该UpdatePanel
 在页面输入以下代码:

<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block" UpdateMode="Always">   
             <ContentTemplate>
                <%=DateTime.Now %>
                 <asp:Button ID="Button1" runat="server" Text="点击该按钮只有上面时间更新" />
             </ContentTemplate>
        </asp:UpdatePanel>
        <hr />
        <asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Block" UpdateMode="Conditional">   
             <ContentTemplate>
                <%=DateTime.Now %>
                 <asp:Button ID="Button2" runat="server" Text="点击该按钮全部时间都会更新" />
             </ContentTemplate>
        </asp:UpdatePanel> 

运行后就会发现按钮文本所写的效果。

三、ChildrenAsTriggers属性,值为True(默认值)为False
 在页面输入以下代码:

<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block" UpdateMode="Always" ChildrenAsTriggers="true">    
             <ContentTemplate>
                <%=DateTime.Now %>
             </ContentTemplate>
        </asp:UpdatePanel>
        <hr />
        <asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Block" UpdateMode="Conditional" ChildrenAsTriggers="false">   
             <ContentTemplate>
                <%=DateTime.Now %>
                 <asp:Button ID="Button2" runat="server" Text="点击该按钮只有上方的时间会更新" />
             </ContentTemplate>
        </asp:UpdatePanel> 

运行结果如按钮文本所写,他的作用是任何异步回送都不会引发该UpdatePanel更新(单独指定的除外)。
 注意:如果ChildrenAsTriggers的值为False,则UpdateMode的值也应该为Conditional,否则会引发异常,这时他不知道是该更新还是不更新。

四、Triggers属性,这其实是UpdatePanel的一个子节点,作用是为UpdatePanel指定一个控件,由该控件引发UpdatePanel更新
 在页面输入以下代码:


<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block"  ChildrenAsTriggers="true" UpdateMode="Conditional">    
             <ContentTemplate>
                <%=DateTime.Now %>
             </ContentTemplate>
             <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" />
             </Triggers>
        </asp:UpdatePanel><hr />

<asp:Button ID="Button1" runat="server" Text="该按钮在UpdatePanel外,但为Triggers所指定,也会引发UpdatePanel更新" />

 由于UpdatePanel1的UpdateMode属性为Conditional,所以只有当里面的控件引发回送时也会更新,但是Triggers节点指定了一个外部的Button控件,由该控件一样会引发UpdatePanel的更新。有意思的是被指定的Button按钮会变成一个异步控件,也就是说如果你还双击该按钮在CS文件中添加了一个Button_Click事件的话,会报出一个脚本错误!

在<asp:AsyncPostBackTrigger ControlID="Button1" />中还有一个属性“EventName”,该属性指定了一个事件名称,作用为只有当ControlID指定的控件的EventName指定的事件才会引发更新。

在页面输入以下代码:

<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block"  ChildrenAsTriggers="false" UpdateMode="Conditional">    
             <ContentTemplate>
                <%=DateTime.Now %>
                 <asp:Button ID="Button1" runat="server" Text="不会刷新" />
                 <asp:Button ID="Button2" runat="server" Text="不会刷新" />
             </ContentTemplate>
        </asp:UpdatePanel>

如第三个属性所说:这里把UpdatePanel的ChildrerAsTriggers属性设置为False,则任何控件引发的回送都不会引发该UpdatePanel更新。
 但是把代码修改如下:

<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block"  ChildrenAsTriggers="false" UpdateMode="Conditional">    
             <ContentTemplate>
                <%=DateTime.Now %>
                 <asp:Button ID="Button1" runat="server" Text="因为是Triggers指定的控件,所以会引发更新" />
                 <asp:Button ID="Button2" runat="server" Text="不会刷新" />
             </ContentTemplate>
             <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" />
             </Triggers>
        </asp:UpdatePanel> 

其实就是为UpdatePanel添加了一个<Triggers>节点,指向Button1。则运行结果按钮文本所示。

事实上Triggers可以指定UpdatePanel外的控件,也可以指定一个在其他UpdatePanel内的控件,或者在GridView中的一个控件。

在母版页中使用 UpdatePanel

要在母版页中使用 UpdatePanel 控件,必须确定如何使用 ScriptManager 控件。如果在母版页面中放置了一个 ScriptManater 控件,则 ScriptManager 控件可以在所有的内容面中起作用。(如果要在内容页中声明脚本或服务,可以在页面中添加一个 ScriptManagerProxy,它具有和 ScriptManager 差不多一样的属性和方法。)
如果在母版页中没有包含 ScriptManager 控件,就必须在包含 UpdatePanel 控件的每个内容页是都要放置一个 ScriptManager 控件,设计的选择依赖于在应用程序中将如何管理客户端脚本。
如果在母版页中包含了 ScriptManager 控件,而在某个内容页中又不打算使用局部页面输出的功能时,必须用程序设置内容中的 ScriptManager 控件的 EnablePartialRendering 为 false  。

使用嵌套的 UpdatePanel 控件

UpdatePanel 控件可以嵌套使用,如果父面板被刷新,则所有嵌套的面板也都会被刷新。
下列代码展示了如何在一个 UpdatePanel 控件中定义另一个 UpdatePanel 控件。

<&percnt;@ Page Language="C#" &percnt;>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>UpdatePanelUpdateMode 示例</title>
    <style type="text/css">
    div.NestedPanel
    {
      position: relative;
      margin: 2&percnt; 5&percnt; 2&percnt; 5&percnt;;
    }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager"
                               runat="server" />
            <asp:UpdatePanel ID="OuterPanel"
                             UpdateMode="Conditional"
                             runat="server">
                <ContentTemplate>
                    <div>
                        <fieldset>
                            <legend>外层 Panel </legend>
                            <br />
                            <asp:Button ID="OPButton1"
                                        Text="外层面板按钮"
                                        runat="server" />
                            <br />
                            最后更新在:
                            <&percnt;= DateTime.Now.ToString() &percnt;>
                            <br />
                            <br />
                            <asp:UpdatePanel ID="NestedPanel1"
                                               UpdateMode="Conditional"
                                               runat="server">
                                <ContentTemplate>
                                    <div class="NestedPanel">
                                        <fieldset>
                                            <legend>嵌套面板</legend>
                                            <br />
                                            最后更新在:
                                            <&percnt;= DateTime.Now.ToString() &percnt;>
                                            <br />
                                            <asp:Button ID="NPButton1"
                                                        Text="嵌套面板按钮"
                                                        runat="server" />
                                        </fieldset>
                                    </div>
                                </ContentTemplate>
                            </asp:UpdatePanel>
                        </fieldset>
                    </div>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
    </form>
</body>
</html>

用程序创建 UpdatePanel 控件

要用程序添加一个 UpdatePanel 控件到页面中,可以先创建一个新的 UpdatePanel 实例,然后使用它的 ContentTemplateContainer 属性的 Add( Control ) 方法来添加其他控件。不能直接使用 ContentTemplate  属性来添加控件。
如果 UpdatePanel 控件是程序添加的,只有来自同样命名容器如 UpdatePanel 控件中控件的回发才可以被使用为面板的触发器。
下列代码演示了如何用程序添加 UpdatePanel 控件。

<&percnt;@ Page Language="C#" &percnt;>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        UpdatePanel up1 = new UpdatePanel();
        up1.ID = "UpdatePanel1";
        up1.UpdateMode = UpdatePanelUpdateMode.Conditional;
        Button button1 = new Button();
        button1.ID = "Button1";
        button1.Text = "Submit";
        button1.Click += new EventHandler(Button_Click);
        Label label1 = new Label();
        label1.ID = "Label1";
        label1.Text = "A full page postback occurred.";
        up1.ContentTemplateContainer.Controls.Add(button1);
        up1.ContentTemplateContainer.Controls.Add(label1);
        Page.Form.Controls.Add(up1);

}
    protected void Button_Click(object sender, EventArgs e)
    {
        ((Label)Page.FindControl("Label1")).Text = "Panel refreshed at " +
            DateTime.Now.ToString();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>UpdatePanel Added Programmatically Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="TheScriptManager"
                               runat="server" />
        </div>
    </form>
</body>
</html>

UpdatePanel 的关键属性

ChildrenAsTriggers:

指示来自 UpdatePanel 控件的直接子控件的回发是否更新面板的内容。设置为 true 时更新,否则不更新,默认为 true 。如果此属性设置为 false ,UpdatePanel 控件的 UpdateMode 就必须设置为 Conditional ,否则会抛出 InvalidOperationException 异常。

UpdateMode:

指示什么时候需要更新面板。当一个UpdatePanel 控件没有包含在另一个 UpatePanel 控件中时,面板的更新是根据 UpdateMode 、ChildrenAsTriggers 属性的设置,以及触发器的集合来进行的。当一个 UpdatePanel 控件在另一个 UpdatePanel 控件内部时,子面板会自动在父面板更新时更新。
UpdatePanel 控件的内容在下列情形下会更新:

  • 如果 UpdateMode 属性设置为 Alwarys 时,UpdatePanel 控件中的内容会在源自页面上任何地方的每个回发时更新。这包括由包含在其他 UpdatePanel 控件中的控件的回发和没有在 UpdatePanel 控件中的回发。
  • 如果 UpdatePanel 控件嵌套在另一个 UpdatePanel 控件中时,父面板更新时它也会被更新。
  • 如果 UpdateMode 属性被设置为 Conditional 时,且出现下列条件之一时:
    • 显式调用 UpdatePanel 控件的 Update() 方法。
    • 由 UpdatePanel 控件中的 Triggers 属性定义的触发器控件引起的回送。在这种情况下,控件会显式的触发面板内容的更新。定义为触发器的控件可以在 UpdatePanel 控件的内部也可以在其外部。
    • ChildrenAsTriggers 属性设置为 true ,并且是由 UpdatePanel 控件中的子控件导致的回发。在嵌套的 UpdatePanel 控件中的子控件不会引起外层 UpdatePanel 控件的更新,除非显示的定义为触发器。

由以上内容可以看出,使用 UpdatePanel 控件可以方便的帮助大家开发出具有 AJAX 特性的 ASP.NET 应用程序来。当然,它也不是万能的,过度的使用会引起一定的性能开销,同时它还与现在的部分 ASP.NET 控件不兼容,如 TreeView、Menu,以及 WebParts 控件等。

转载于:https://www.cnblogs.com/panjun-Donet/archive/2009/02/12/1389408.html

UpdatePanel控件的简单属性学习相关推荐

  1. 学习UpdatePanel控件

    UpdatePanel控件的使用 ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖 ...

  2. 学习UpdatePanel控件-

      原文可以显示图片(转载:http://blog.csdn.net/ILOVEMSDN/archive/2007/11/11/1879343.aspx)   UpdatePanel控件的使用 200 ...

  3. UpdatePanel 控件简介

    UpdatePanel 控件简介 全部折叠全部展开      代码:全部 代码:多种 代码:Visual Basic 代码:C# 代码:Visual C++ 代码:F# 代码:JScript  Upd ...

  4. ScriptManager和UpdatePanel控件的使用

    ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异步局部更新区域,它必须依赖于ScriptManager存在,因 ...

  5. UpdatePanel控件

    ASP.NET UpdatePanel控件可用于生成功能丰富.以客户端为中心的Web应用程序.通过使用UpdatePanel控件,可以在回发期间刷新网页的选定部分而不是刷新整个网页.这称为执行部分页更 ...

  6. UpdatePanel控件的使用

    ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖于ScriptManager存在, ...

  7. asp.net ajax学习系列功能强大的UpdatePanel控件

    先给一个简单的例子,后面给一个比较复杂的例子. 改进后的UpdatePanel使页面部分更新(Partial-Page Updates)实现起来非常容易. 要想在已有web页面或新建页面中加入部分更新 ...

  8. 通过Ajax来简单的实现局部刷新(主要为C#中使用的UpdatePanel控件和ScriptManager控件)...

    1. ScriptManager和UpdatePanel控件联合使用可以实现页面局部异步刷新的效果.UpdatePanel用来设置页面中局部异步刷新的区域,它必须依赖于ScriptManager,因为 ...

  9. ASP.NET AJAX入门系列(5):使用UpdatePanel控件(二)

    UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加 ...

最新文章

  1. 负载均衡算法-响应速度均衡
  2. html滚动条样式自定义,CSS3自定义滚动条样式
  3. opencv检测黑色区域
  4. 修改与删除@property封装的数据属性
  5. SAP gateway的307重定向
  6. UNIX(多线程):18---异步任务提供者(Provider) 介绍(续)
  7. String(byte[] bytes, int offset, int length)
  8. 学习simple.data之基础篇
  9. everything-everything使用技巧,过滤文件语法
  10. Unity3D资源加载Resources
  11. 计算机职业规划作文1000字左右,职业生涯规划_1000字
  12. 威纶通触摸屏与仪表通讯_详解通信威纶通触摸屏与英威腾变频器的使用
  13. 卫星电视的双本振,单本振及高频头相关知识普及
  14. antd table input 失焦的问题
  15. 博后招募 | 浙江大学陈华钧教授招聘知识图谱等方向博后及算法工程师
  16. Mac升级系统后,idea中Git无法使用:xcrun: error: invalid active developer path
  17. Ratel不进行预测,一段时间后恢复正常
  18. C语言 母牛生小牛问题 多组测试数据
  19. 在Linux(fedora 20)上解压缩rar文件
  20. 面经_OPPO研究院_数据科学研究员实习岗

热门文章

  1. 品优购dubbox文档bug连环计,还是自己敲最实在!!!!!!
  2. 20165231 2017-2018-2 《Java程序设计》第5周学习总结
  3. Java加密算法 AES
  4. kohana task 编写计划任务
  5. pureMVC介绍及学习
  6. POJ 3322 Bloxorz I(BFS)
  7. ip_vs实现分析(7)
  8. java.函数参数太多,Java方法参数太多怎么办—Part 2—引入参数对象,javapart
  9. unity 弹出式菜单_Java Swing JMenu和JPopupMenu:菜单和弹出式菜单
  10. 抓住二维核力的尾巴---将粒子