《Web应用程序开发教程——ASP.NET+SQL Server 教学课件 PPT 作者 岳学军 李晓黎 第07章》由会员分享,可在线阅读,更多相关《Web应用程序开发教程——ASP.NET+SQL Server 教学课件 PPT 作者 岳学军 李晓黎 第07章(41页珍藏版)》请在金锄头文库上搜索。
1、,Web应用程序开发教程 ASP.NET+SQL Server,授课教师: 职务:,第7章 ASP.NET AJAX服务器端编程,课程描述 AJAX全称为Asynchronous JavaScript and XML(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。ASP.NET AJAX是免费的Microsoft AJAX框架,用于构建交互式的Web应用程序,它可以支持各种流行的浏览器。本章将介绍如何使用ASP.NET AJAX开发Web应用程序。,本章知识点,ASP.NET AJAX基础 使用ScriptManager控件 使用UpdatePanel控件实现网页
2、局部刷新 使用UpdateProgress控件 使用Timer控件,7.1 ASP.NET AJAX基础,Ajax的基本概念和特点 下载和安装ASP.NET AJAX,7.1.1 Ajax的基本概念和特点,Ajax并不是一种技术,它是如下几种技术的结合: 使用XHTML+CSS来表示信息。 使用JavaScript操作Document Object Model进行动态显示及交互。 使用XML和XSLT进行数据交换及相关操作。 使用XMLHttpRequest对象与Web服务器进行异步数据交换。 使用JavaScript将所有这些绑定在一起。,传统Web应用程序模型,Ajax应用程序的工作模型,
3、传统Web应用程序采用同步的交互方式,Ajax应用程序采用异步的交互方式,7.1.2 下载和安装ASP.NET AJAX,访问下面的ASP.NET AJAX官网 http:/ AJAX Archive for ASP.NET 2.0下载页面,创建ASP.NET AJAX网站项目,7.2 使用ScriptManager控件,ScriptManager控件可以实现网页的局部刷新,所有需要支持ASP.NET AJAX的ASP.NET页面上只能有一个ScriptManager控件。使用代码来定义ScriptManager控件的方法如下: ,ScriptManager控件的重要属性和方法,7.3 使用U
4、pdatePanel控件实现网页局部刷新,UpdatePanel控件基础 使用ContentTemplate属性 ContentTemplateContainer属性 Triggers属性 在ScriptManager控件中注册异步提交控件,7.3.1 UpdatePanel控件基础,使用代码来定义简单UpdatePanel控件的方法如下: ,UpdatePanel控件的重要属性,拖动UpdatePanel控件到网页中,7.3.2 使用ContentTemplate属性,【例7.1】 演示使用UpdatePanel控件和ScriptManager控件实现网页的局部刷新,在UpdatePanel
5、控件中使用ContentTemplate属性来定义其中包含的服务器控件。,DropDownSelection_Change事件,当用户选择不同的颜色时,引发DropDownSelection_Change事件,处理程序中可以根据选择的颜色来设置日历的背景,代码如下: protected void DropDownSelection_Change(object sender, EventArgs e) Calendar1.DayStyle.BackColor = System.Drawing.Color.FromName(ColorList.SelectedItem.Value); ,7.3.3
6、 ContentTemplateContainer属性,如果希望通过编程的方式动态向UpdatePanel控件中添加服务器控件,则可以将动态生成的服务器控件添加到ContentTemplateContainer属性中。 【例7.2】 在UpdatePanel控件中使用ContentTemplateContainer属性动态添加一个Label控件和一个Button控件。,【例7.2】,7.3.4 Triggers属性,在ASP.NET AJAX中有两种Triggers,即AsyncPostBackTrigger和PostBackTrigger。AsyncPostBackTrigge用来指定某个服
7、务器端控件以及其将触发的服务器端事件作为该UpdatePanel的异步更新触发器,它需要设置的属性有控件ID和服务端控件的事件;PostBackTrigger用来指定在UpdatePanel中的某个服务端控件,它所引发的回传不使用异步回传,而仍然是传统的整页回传。,【例7.3】,在UpdatePanel控件中分别使用两种Triggers属性来定义两上Button控件,一个实现异步更新,另一个使用传统的整页回传机制。 网页中有两个按钮,分别使用AsyncPostBackTrigger属性和PostBackTrigger属性来定义。单击不同按钮的效果是一样的,即在下面的Label控件中显示更新时间
8、,只是一个按钮采用异步回送方式,另一个按钮采用整页回送方式。,7.3.5 在ScriptManager控件中注册异步提交控件,即使对于不包含在UpdatePanel控件中的服务器控件,也可以使用ScriptManager控件的RegisterAsyncPostBackControl方法将其注册为异步提交的控件,并调用UpdatePanel控件的Update方法进行更新。 【例7.4】 演示ScriptManagert控件的RegisterAsyncPostBackControl方法的使用。在网页中添加一个PanelUpdate控件,并在其中添加两个Label控件,在PanelUpdate控件外
9、部定义一个Button控件。,【例7.4】,【例7.4】,在Form_Load方法中调用ScriptManagert控件的RegisterAsyncPostBackControl方法将Button1控件注册为异步提交控件,代码如下: public void Page_Load(object sender, EventArgs e) ScriptManager1.RegisterAsyncPostBackControl(Button1); 在Button1_Click方法中调用UpdatePanel控件的Update方法,刷新UpdatePanel的内容,代码如下: public void Bu
10、tton1_Click(object sender, EventArgs e) this.Label2.Text = DateTime.Now.ToString(); this.UpdatePanel1.Update(); ,【例7.4】,7.4 使用UpdateProgress控件,UpdateProgress控件基础应用 在页面中使用多个UpdateProgress控件,7.4.1 UpdateProgress控件基础应用,使用代码来定义简单UpdateProgress控件的方法如下: ,【例7.5】,演示使用UpdateProgress控件的方法。首先在网页中添加一个UpdatePane
11、l控件,然后在其中添加一个Label控件和一个Button控件。,【例7.5】,单击按钮对应的代码如下: protected void Button1_Click(object sender, EventArgs e) Label1.Text = “当时时间是:“+ DateTime.Now.ToString() + “。“; Thread.Sleep(5000); ,【例7.5】,7.4.2 在页面中使用多个UpdateProgress控件,如果页面中存在多个UpdatePanel控件,则可以使用多个UpdateProgress控件,为每个UpdatePanel控件提供一个UpdatePro
12、gress控件,用于显示其刷新时的说明文字或图片。UpdateProgress控件的AssociatedUpdatePanelID属性可以指定与其相关联的UpdatePanel控件。 【例7.6】 演示为多个UpdatePanel控件定义各自UpdateProgress控件的方法。首先在网页中添加两个UpdatePanel控件,然后分别在其中添加一个Label控件和一个Button控件。将两个UpdatePanel控件的UpdateMode属性都设置为Conditional。在网页中添加两个UpdateProgress控件,在其中一个UpdateProgress控件中添加字符串“正在处理Upd
13、atePanel1的刷新请求”,在另一个UpdateProgress控件中添加字符串“正在处理UpdatePanel2的刷新请求”。,【例7.6】,【例7.6】,在装载页面时,需要与设置UpdateProgress控件相关联的UpdatePanel控件,代码如下: protected void Page_Load(object sender, EventArgs e) UpdateProgress1.AssociatedUpdatePanelID = “UpdatePanel1“; UpdateProgress2.AssociatedUpdatePanelID = “UpdatePanel2“
14、; 经过这样的设置,UpdateProgress1控件将与UpdatePanel1控件相关联,而UpdateProgress2控件将与UpdatePanel2控件相关联。单击按钮的程序与例7.5中类似,代码如下: protected void Button1_Click(object sender, EventArgs e) this.Label1.Text = DateTime.Now.ToString(); Thread.Sleep(5000); protected void Button2_Click(object sender, EventArgs e) this.Label2.Tex
15、t = DateTime.Now.ToString(); Thread.Sleep(5000); ,【例7.6】,7.5 使用Timer控件,使用Timer控件可以设置一个时钟,定义在一定时间间隔内在网页内的局部刷新。一个Timer控件对应一个UpdatePanel控件。使用代码来定义简单Timer控件的方法如下: ,Timer控件的重要属性,【例7.7】 演示使用Timer控件的方法。,首先在网页中添加一个UpdatePanel控件,然后在其中添加一个Label控件。将UpdatePanel控件的UpdateMode属性设置为Conditional。 向网页中添加一个Timer控件,并将其I
16、nterval属性设置为1000(即1秒钟)。,【例7.7】,在装载Web窗体时,向Label控件中赋值当前的系统时间,代码如下: protected void Page_Load(object sender, EventArgs e) Label1.Text = “当前时间是:“ + DateTime.Now.ToString(); 因为将Timer控件的Interval属性设置为1000,所以每秒钟都会引发Timer_Tick事件,其处理代码如下: protected void Timer1_Tick(object sender, EventArgs e) Label1.Text = “当前时间是:“ + DateTime.Now.ToString(); 这样每秒钟页面是都会显示当前的系统时间,因此就得到了一个可以实时变化的时钟。运行工程,确认页面中的时间每秒钟都在发生变化,但整个页面没有刷新。,