`
lovnet
  • 浏览: 6693015 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

ASP.NET AJAX入门系列(4):使用UpdatePanel控件(一)

阅读更多

UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新。通过本文来学习一下UpdatePanel简单的使用方法(第一篇)。

主要内容

1UpdatePanel控件概述

2UpdatePanel工作原理

3ContentTemplate属性

4ContentTemplateContainer属性

5Triggers属性

一.UpdatePanel控件概述

UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新。通过本文来学习一下UpdatePanel工作原理和使用方法。简单的UpdatePanel定义如下:重要的属性如下:

<asp:UpdatePanelID="UpdatePanel1"runat="server">

<ContentTemplate>

<!---->

</ContentTemplate>

<Triggers>

<asp:AsyncPostBackTrigger/>

<asp:PostBackTrigger/>

</Triggers>

</asp:UpdatePanel>

UpdatePanel

属性

说明

ChildrenAsTriggers

UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanle的更新。

RenderMode

表示UpdatePanel最终呈现的HTML元素。Block(默认)表示<div>Inline表示<span>

UpdateMode

表示UpdatePanel的更新模式,有两个选项:AlwaysConditionalAlways是不管有没有Trigger,其他控件都将更新该UpdatePanelConditional表示只有当前UpdatePanelTrigger,或ChildrenAsTriggers属性为true时当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel

二.UpdatePanel工作原理

UpdatePanel的工作依赖于ScriptManager服务端控件(ASP.NET AJAX入门系列(2):使用ScriptManager控件)和客户端PageRequestManager类(Sys.WebForms.PageRequestManager,在后面的客户端类中会专门说到),当ScriptManager中允许页面局部更新时,它会以异步的方式回传给服务器,与传统的整页回传方式不同的是只有包含在UpdatePanel中的页面部分会被更新,在从服务端返回HTML之后,PageRequestManager会通过操作DOM对象来替换需要更新的代码片段。

看一下官方网站提供的UpdatePanel工作原理图:

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype>

三.ContentTemplate属性

Contente Template标签用来定义UpdatePanel的内容,在它里面可以放任何ASP.NET元素。如果你想要使用编程的手法来控制UpdatePanel中的内容,就需要使用ContenteTemplateContainer,下面会说到,先来看一个简单的ContentTemplate的例子。四.ContentTemplateContainer属性

<asp:UpdatePanelID="UpdatePanel1"runat="server">

<ContentTemplate>

<asp:CalendarID="Calendar1"ShowTitle="True"runat="server"/>

<div>

Background:

<br/>

<asp:DropDownListID="ColorList"AutoPostBack="True"OnSelectedIndexChanged="DropDownSelection_Change"

runat
="server">

<asp:ListItemSelected="True"Value="White">

White
</asp:ListItem>

<asp:ListItemValue="Silver">

Silver
</asp:ListItem>

<asp:ListItemValue="DarkGray">

DarkGray
</asp:ListItem>

<asp:ListItemValue="Khaki">

Khaki
</asp:ListItem>

<asp:ListItemValue="DarkKhaki">D

arkKhaki
</asp:ListItem>

</asp:DropDownList>

</div>

</ContentTemplate>

</asp:UpdatePanel>

事件代码:

<scriptrunat="server">

voidDropDownSelection_Change(Objectsender,EventArgse)

{

Calendar1.DayStyle.BackColor
=

System.Drawing.Color.FromName(ColorList.SelectedItem.Value);

}


</script>

如果要使用编程的手法去设置UpdatePanel中的内容,需要创建一个UpdatePanel,并且添加控件到ContentTemplateContainer,而不能直接添加控件到ContentTemplate,如果想直接设置ContentTemplate,则需要编写一个自定义的Template,并去实现位于System.Web.UI命名空间下的接口ITemplate。看一个简单的来自于官方网站的例子:

<%@PageLanguage="C#"%>

<scriptrunat="server">

protected
voidPage_Load(objectsender,EventArgse)

{

UpdatePanelup1
=newUpdatePanel();

up1.ID
="UpdatePanel1";

up1.UpdateMode
=UpdatePanelUpdateMode.Conditional;

Buttonbutton1
=newButton();

button1.ID
="Button1";

button1.Text
="Submit";

button1.Click
+=newEventHandler(Button_Click);

Labellabel1
=newLabel();

label1.ID
="Label1";

label1.Text
="Afullpagepostbackoccurred.";

up1.ContentTemplateContainer.Controls.Add(button1);

up1.ContentTemplateContainer.Controls.Add(label1);

Page.Form.Controls.Add(up1);

}


protected
voidButton_Click(objectsender,EventArgse)

{

((Label)Page.FindControl(
"Label1")).Text="Panelrefreshedat"+

DateTime.Now.ToString();

}


</script>

<htmlxmlns="http://www.w3.org/1999/xhtml">

<headid="Head1"runat="server">

<title>UpdatePanelAddedProgrammaticallyExample</title>

</head>

<body>

<formid="form1"runat="server">

<div>

<asp:ScriptManagerID="TheScriptManager"

runat
="server"/>

</div>

</form>

</body>

</html>


五.Triggers属性

ASP.NET AJAX中有两种Triggers:分别为AsyncPostBackTriggerPostBackTriggerAsyncPostBackTrigge用来指定某个服务器端控件以及其将触发的服务器端事件作为该UpdatePanel的异步更新触发器,它需要设置的属性有控件ID和服务端控件的事件;PostBackTrigger用来指定在UpdatePanel中的某个服务端控件,它所引发的回送不使用异步回送,而仍然是传统的整页回送。这一点跟Atlas有很大的区别,大家需要注意。看一个小例子,虽然两个Button都放在了UpdatePanel中,但是由于在PostBackTrigger中指定了Button2,所以它使用的仍然是整页回送。

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default2.aspx.cs"Inherits="Default2"%>

<scriptrunat="server">

voidButton1_Click(objectsender,EventArgse)

{
this.Label1.Text="更新时间:"+System.DateTime.Now.ToString();
}


voidButton2_Click(objectsender,EventArgse)

{
this.Label1.Text="更新时间:"+System.DateTime.Now.ToString();
}


</script>

<htmlxmlns="http://www.w3.org/1999/xhtml">

<headrunat="server">

<title>UpdatePanelTriggerSample</title>

</head>

<body>

<formid="form1"runat="server">

<div>

<asp:ScriptManagerID="ScriptManager1"runat="server">

</asp:ScriptManager>

</div>

<asp:UpdatePanelID="UpdatePanel1"runat="server">

<ContentTemplate>

<div>

<asp:ButtonID="Button1"runat="server"Text="异步回送"OnClick="Button1_Click"/>&nbsp;&nbsp;

<asp:ButtonID="Button2"runat="server"Text="整页回送"OnClick="Button2_Click"/><br/>

<br/>

<asp:LabelID="Label1"runat="server"Text="当前时间"Font-Bold="True"Font-Size="Large"></asp:Label></div>

<
分享到:
评论

相关推荐

    ASP.NET_AJAX入门系列:使用UpdatePanel控件.doc

    ASP.NET_AJAX入门系列:使用UpdatePanel控件.docASP.NET_AJAX入门系列:使用UpdatePanel控件.doc

    ASP.NET AJAX入门系列:使用UpdatePanel控件

    ASP.NET AJAX入门系列UpdatePanel控件教程

    ASP.NET_AJAX入门系列

    ASP.NET_AJAX入门系列:使用UpdatePanel控件.doc ASP.NET_AJAX入门系列:使用客户端脚本对UpdateProgress编程.doc ASP.NET_AJAX入门系列:在多个UpdatePanle中使用Timer控件.doc ASP.NET_AJAX入门系列:在母版页中...

    ASP.NET AJAX

    ASP.NET AJAX入门系列(4):使用UpdatePanel控件(一) 导读:UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,...

    ASP.NET-AJAX教程.rar

    ASP.NET AJAX教程 第一章:ajax概述 第七章:使用客户端脚本对UpdateProgress编 第二章:使用ScriptManager 第八章:自定义异常处理 第三章:使用ScriptManagerProxy控件 第九章:在母版页中使用UpdatePanel 第四...

    ASP.NET AJAX实战源码

    4.4.1 引入UpdatePanel控件 95 4.4.2 更多UpdatePanel 98 4.4.3 在此插入反馈 99 4.4.4 使用计时器 101 4.4.5 错误处理 103 4.5 小结 104 第5章 建立异步网络调用 105 5.1 使用ASP.NET Web服务 105 5.1.1 ...

    ASP.NET AJAX重要的基本五控件

    ASP.NET AJAX(ScriptManager,ScriptManagerProxy,UpdatePanel,UpdateProgress,Timer),文档及单个AJAX控件的使用方法示例等

    ASP.NET AJAX 入门教程

    包括了核心AJAX类型系统,网络协议层(networking stack),组件模型,扩展器(extender)基类,以及与ASP.NET集成的服务器端功能(包括广受欢迎的ScriptManager,UpdatePanel,和 Timer控件)。

    ASP.NET AJAX经典范例168 VC#版 (代码) Part 12

    主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能、如何在客户端JavaScript调用web服务、如何从...

    完全手册:ASP.net Ajax电子教程(9-15章)

    第一篇 ASP.NET AJAX概述 第1章 初识ASP.NET AJAX  1.1 ASP.NET AJAX概述  1.1.1 ASP.NET和ASP.AJAX  1.1.2 ASP.AJAX服务器端架构  1.1.3 ASP.AJAX客户端架构  1.2 搭建ASP.NET AJAX开发环境  1.3 第一个ASP...

    完全手册:ASP.net Ajax电子教程(1-8章)

    第一篇 ASP.NET AJAX概述 第1章 初识ASP.NET AJAX  1.1 ASP.NET AJAX概述  1.1.1 ASP.NET和ASP.AJAX  1.1.2 ASP.AJAX服务器端架构  1.1.3 ASP.AJAX客户端架构  1.2 搭建ASP.NET AJAX开发环境  1.3 第一个ASP...

    ASP.NET AJAX经典范例168 VC#版 (代码) Part 7

    主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能、如何在客户端JavaScript调用web服务、如何从...

    ASP.NET AJAX经典范例168 VC#版 (代码) Part 11

    主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能、如何在客户端JavaScript调用web服务、如何从...

    ASP.NET AJAX经典范例168 VC#版 (代码) Part 14

    主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能、如何在客户端JavaScript调用web服务、如何从...

    ASP.NET AJAX经典范例168 VC#版 (代码) Part 8

    主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能、如何在客户端JavaScript调用web服务、如何从...

    ASP.NET AJAX深入浅出系列课程(24):UpdatePanel与服务器端脚本控件(上)

    ASP.NET AJAX深入浅出系列课程(24):UpdatePanel与服务器端脚本控件(上)

    ASP.NET AJAX深入浅出系列课程(25):UpdatePanel与服务器端脚本控件(下)

    ASP.NET AJAX深入浅出系列课程(25):UpdatePanel与服务器端脚本控件(下)

    完全手册ASP.NETAjax实用开发详解(14-15)

    第一篇 ASP.NET AJAX概述 第1章 初识ASP.NET AJAX  1.1 ASP.NET AJAX概述  1.1.1 ASP.NET和ASP.AJAX  1.1.2 ASP.AJAX服务器端架构  1.1.3 ASP.AJAX客户端架构  1.2 搭建ASP.NET AJAX开发环境  1.3 第一个ASP...

    [ASP.NET.AJAX编程参考手册(涵盖ASP.NET.3.5及2.0)].(美)霍斯拉维.扫描版.pdf

    中文名: ASP.NET AJAX编程参考手册(涵盖ASP.NET 3.5及2.0) 原名: ASP.NET AJAX Programmer's Reference 作者: (美)霍斯拉维 译者: 刘志忠 图书分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 清华大学出版社 书号...

    asp.net UpdatePanel的简单用法

    UpdatePanel的简单用法: 局部更新是ajax技术的最基本,也是最重要的用法,今天大概把asp.net ajax中的局部更新控件 updatepanel的用法记录下,大家可以共同探讨

Global site tag (gtag.js) - Google Analytics