ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果。其中的UpdatePanel就是设置页面中异步局部更新区域,它必须依赖于ScriptManager存在,因为ScriptManger控件提供了客户端脚本生成与管理UpdatePanel的功能。
几个重要的属性:
ScriptManager控件的EnablePartialRendering属性:true-实现页面的异步局部更新;false-实现全页面的刷新。
UpdatePanel控件的RenderMode属性:InLine-UpdatePanel控件被解析成HTML的<span>标记;Block-UpdatePanel控件被解析成HTML控件的<DIV>。
UpdatePanel控件的UpdateMode属性:Always-UpdatePanel页面上任何一处发生的回发操作都会产生页局部更新;Conditional-只在特定的情况下才产页面的回发,如执行UpdatePanel控件的update()方法或在指定的触发器的操作下。
UpdatePanel控件的ChildAsTrigger属性:指示UpdatePanel内部控件引起的回发是否产生当前UpdatePanel控件的局部更新。如果UpdateMode设为Always的话,那ChildAsTrigger局性必须设为True,否则运行出错。
一、UpdatePanel内部的控件引起的回发,来更新当前UpdatePanel内部的控件内容:
1.向页面中加入ScriptManager、UpdatePanel控件和一个Label控件(Label2)。
2.在UpdatePanel中加入一个Button、一个Label(Label1)。
3.双击Button在事件处理程序中写入下列代码:Label1.Text = DateTime.Now.ToString();
4.在Page_Load事件中写入下列代码:Label2.Text = DateTime.Now.ToString();
5.运行页面,发现每次点击按钮都会产生异步局步刷新,只有Label1的内容发生更改,页面上的Label2时间没有发生更改。
代码如下:
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="True">
<ContentTemplate>
<asp:Label ID="Label1" runat="server"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString(); ;
}
protected void Page_Load(object sender, EventArgs e)
{
Label2.Text = DateTime.Now.ToString();
}
注意:此时的ScriptManager的EnablePartialRendering属性应设为true。UpdatePanel的UpdateMode属性应设为Always。ChildAsTrigger属性应设为true。
二、UpdatePanel控件外部的控件引起的回发,来异步更新UpdatePanel内部的内容:
虽然上面的方式能够很简单地实现异步局部更新的功能,但就性能方面考虑,我们应当只将数据确实会发生变化的控件摆放在UpdatePanel中,这就可能会出现引起回发的控件不在UpdatePanel内的情况。
有两种方式实现这种效果:
a.在Page_Load方法中用ScriptManager1.RegisterAsyncPostBackControl()来注册一下要实现异步更新的控件。
b.用触发器来实现。
1、ScriptManager1.RegisterAsyncPostBackControl()注册的控件可以实现对所有的UpdatePanel控件的异步更新。
如:ScriptManager1.RegisterAsyncPostBackControl(this.Button2);实现对Button2的注册,那此时Button2的回发就变成一个异步回发(页面不会刷新),它会导致页面上所有的UpdatePanel的内容的更新。
注意:此时的ScriptManager的EnablePartialRendering属性应设为true。UpdatePanel的UpdateMode属性应设为Always。
2、ScriptManager1.RegisterAsyncPostBackControl()注册的控件可以实现针对特定UpdatePanel控件的异步更新。
a.把页面上所有的UpdatePanel控件的UpdateMode设为Conditional。
b.ScriptManager1.RegisterAsyncPostBackControl(this.Button2);实现对Button2的注册。
c.在Button2控件的Click事件中后面加入后面的代码:UpdatePanel1.Update();
这样Button2按钮只对UpdatePanel1控件实现的异步的局部刷新。
注意:这里的UpdatePanel的属性要设为Conditional,如果还是Always的话,会出现所有的UpdatePanel都刷新的效果。
3、触发器
如果页面上有多个UpdatePanel控件,如果要实现外部的控件的回发引发指定UpdatePanel的更新的话,那应当为要实现刷新的UpdatePanel控件建立一个触发器。
a.选中要进行局部更新的UpdatePanel控件。
b.在其属性页中点击Triggers集合属性右边的小按钮。
c.在弹出的对话框中,的成员列表中添加一个AsyncPostBackTriggers成员。
d.指定AsyncPostBackTriggers成员的ControlID和EventName,即引发异步回送的控件的ID和该控件的事件。
完成以上步骤后,切换到HTML页面就会出现下列代码:
<asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Inline" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="ButtonOut" />
这里需要大家注意的是:
把所有的UpdatePanel控件的UpdateMode设为"Conditional",这样才能够针对建有相关触发器的UpdatePanel更新。
一个UpdatePanel上可以建有多个触发器,实现在不同的情况下对该UpdatePanel控件内容的更新。
三、两个UpdatePanel控件,其中一个UpdatePanel内的控件引发两个UpdatePanel控件的同时刷新。
a.在页面上放入两个UpdatePanel和一个ScriptManager控件。
b.在UpdatePanel1中加入一个标签Label1、一个按钮Button1 ,在UpdatePanel2中加入一个标签Label2。
c.将UpdatePanel1和UpdatePanel2两个控件的的UpdateMode属性设为"Always"
c.在Button1的Click事件中加入下面的代码:
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
Label2.Text = DateTime.Now.ToString();
}
四、两个UpdatePanel控件,其中一个UpdatePanel内的控件引发当前的UpdatePanel控件的刷新,而另一个不刷新。
a.步骤和上面的(三)一样
b.要把UpdatePanel1和UpdatePanel2两个控件的UpdateMode属性设为Conditional
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click1" Text="更新两个UpdatePanel" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
五、两个UpdatePanel控件,其中一个UpdatePanel内的控件引发另一个UpdatePanel控件的刷新,而本身不刷新。
a.步骤和上面的(四)一样
b.把UpdatePanel1和UpdatePanel2的ChildrenAsTriggers属性设为false
c.在UpdatePanel2控件中加入一个触发器,触发源设到UpdatePanel1控件内的Button1的Click事件上。
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="False">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click1" Text="更新两个UpdatePanel" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
转自:http://zhidao.baidu.com/question/48044908.html
分享到:
相关推荐
学习ajax基础知识,让自己的前端技术更上一层,学会与后台交互
### 学习AJAX基础知识:理解现代Web应用的基石 #### AJAX:重新定义Web应用的交互体验 在探讨AJAX的基础知识之前,我们先要理解它为何能够在过去十几年间成为Web开发领域的一颗璀璨明星。AJAX,全称为Asynchronous...
### Ajax基础知识详解 #### 一、Ajax概述 Ajax(Asynchronous JavaScript and XML)是一种用于创建交互式网页应用的网页开发技术。它并非一种全新的技术,而是多种现有技术的组合应用,包括XHTML、CSS、DOM、XML、...
Ajax.ppt可能是一个关于Ajax的PPT教程,包含了更详细的理论知识和案例分析,可以深入学习Ajax的使用和最佳实践。 总的来说,Ajax是现代Web开发中不可或缺的一部分,它极大地提升了用户体验,使得交互更加智能和高效...
**Ajax基础** 1. **创建Ajax对象**: 在JavaScript中,通常使用`XMLHttpRequest`对象来创建Ajax请求。例如: ```javascript var xhr = new XMLHttpRequest(); ``` 2. **打开连接**: 初始化请求,设置请求的URL、...
Ajax的概念是asynchronous javascript and xml的简写。 不是一项具体的技术,而是几门技术的综合应用。 其核心只不过是要在javascript中调用一个XMLHttpRequest的javascript类,这个类可以与Web服务器使用HTTP协议...
以下是对Ajax基础知识的详细阐述: 1. **工作原理** - Ajax 的核心是 XMLHttpRequest 对象,它允许JavaScript在后台与服务器通信,而不会打断用户的交互。 - 一个典型的Ajax流程包括创建XMLHttpRequest对象、打开...
**一、AJAX基础知识** AJAX的核心是XMLHttpRequest对象,它提供了与服务器异步通信的能力。通过创建XMLHttpRequest对象,发送HTTP请求,并处理服务器返回的数据,我们可以实现在后台更新网页的部分内容。然而,XML...
### Ajax基础知识 #### 1. 什么是Ajax? Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它结合了JavaScript、XMLHttpRequest、CSS、DOM等技术来实现...
### Ajax基础知识概览 #### 一、Ajax简介 Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)是一种创建交互式网页应用的技术组合。通过在后台与服务器进行少量数据交换,Ajax可以实现网页的部分更新...
本文主要介绍了Ajax基础知识。具有很好的参考价值,下面跟着小编一起来看下吧
### AJAX基础知识概述 #### 一、引言 随着网络技术的发展与互联网应用的普及,用户对Web应用的要求越来越高。为了满足这些需求,一种名为Ajax(Asynchronous JavaScript and XML)的技术应运而生。《AJAX基础》这...
因此,我们将围绕AJAX这一主题,深入探讨其核心概念、工作原理、应用场景以及相关的开发技巧,以满足对AJAX基础知识的需求。 ### 一、AJAX简介 AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个...
程序内容涵盖ajax基础知识,详细讲解xmlHttpRequest对象,还介绍了客户端将xml,json作为参数发送到服务器端。程序例子都是本人亲写,加载到myeclipse上都可用。例子包含自动提示,自动更新,google自动完成,进度条...
**Ajax基础知识:** 1. **工作原理**:Ajax的工作流程包括创建XMLHttpRequest对象、打开连接、发送请求、接收响应和处理数据。在这个过程中,用户界面保持不刷新,提高了交互性。 2. **请求类型**:GET和POST是最...
本书共分为15章,从初识ASP.NET AJAX开始,首先介绍了ASP.NET AJAX基础知识和结构,然后介绍了ASP.NET AJAX Control Toolkit中的全部控件,如AutoComplete、PasswordStrength、CollapsiblePanel、Tabs、...