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>
分享到:
相关推荐
在ASP.NET Web Forms开发中,ScriptManager和UpdatePanel控件是实现页面异步局部更新的重要工具,这在提升用户体验方面有着显著的作用。本项目通过VS2008环境进行,包含了一个详细的文档说明,旨在帮助开发者理解这...
它与 ScriptManager 控件联合使用,可以实现页面的局部更新,而不需要刷新整个页面。下面将详细介绍 UpdatePanel 控件的使用方法。 ScriptManager 控件 ScriptManager 控件是 UpdatePanel 控件的必备控件,负责...
在ASP.NET AJAX中,ScriptManager和UpdatePanel是两种关键组件,它们共同实现了页面的部分刷新功能,也就是异步更新。理解这两个组件的工作原理对于构建交互性强、用户体验良好的Web应用程序至关重要。 首先,...
UpdatePanel控件是ASP...总结来说,UpdatePanel控件结合ScriptManager是ASP.NET AJAX实现局部异步更新的关键。通过调整其属性和触发器,我们可以精确控制哪些部分的页面在何时进行更新,从而提高网页的交互性和性能。
4. **UpdatePanel**控件:UpdatePanel是实现局部刷新的关键,它将页面的一部分封装起来,当这部分内容需要更新时,只需要更新UpdatePanel内的内容,而不是整个页面。这大大减少了网络流量,提高了响应速度。通过设置...
只需要在页面上放置一个或多个UpdatePanel控件以及一个ScriptManager控件,便可以实现页面的部分内容刷新。 **基本结构:** ```xml <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <!-- 需要局部刷新的...
综上所述,UpdatePanel是ASP.NET AJAX中实现局部更新的关键控件,通过合理配置和使用,可以显著提升Web应用的交互性和性能。了解其工作原理和关键属性,将有助于开发出更加流畅、高效的网页应用。
在ASP.NET Web Forms开发中,UpdatePanel控件是一个非常重要的组件,它允许开发者实现部分页面刷新,即Ajax(Asynchronous JavaScript and XML)效果。UpdatePanel控件使得无需编写复杂的JavaScript或Ajax代码,即可...
综上所述,UpdatePanel是ASP.NET AJAX实现部分页面更新的强大工具,虽然存在一些潜在问题,但合理使用可以显著提升Web应用的交互性和性能。在实际开发中,需要根据项目需求权衡其优缺点,选择合适的方法来实现异步...
2. **启用AJAX**:通过ScriptManager,你可以轻松地启用页面的部分更新,即异步更新,从而实现无刷新的用户界面。 3. **服务引用**:它可以添加对Web服务(ASMX、WCF)的引用,使得在客户端可以直接调用这些服务。 ...
**Ajax和UpdatePanel控件详解** 在Web开发中,用户界面的实时更新是提升用户体验的重要方式之一。ASP.NET Ajax提供了一种称为UpdatePanel的控件,它允许开发者创建部分页面刷新,无需整个页面进行重新加载。这个...
通过以上两种方式,我们可以灵活地利用 ScriptManager 和 UpdatePanel 控件来实现 AJAX 异步更新,从而提高用户体验,减少服务器负载。然而,需要注意的是,虽然 UpdatePanel 提供了便利,但它也可能会增加页面的...
ScriptManager为ASP.NET AJAX提供基础支持,使得我们可以使用UpdatePanel、Timer、AsyncFileUpload等控件来实现异步更新。例如,UpdatePanel可以包裹部分页面内容,当其内的控件触发事件时,只更新该面板而无需重新...
在本文中,我们将深入探讨如何在ASP.NET Web应用程序中使用Ajax控件,特别是与"timer"、"UpdatePanel"、"UpdateProgress"和"ScriptManager"相关的知识点。这些技术是提高网页交互性和用户体验的关键工具,因为它们...
在描述中提到的实例中,我们可能会看到如何使用UpdatePanel控件来实现页面的部分更新。 `PartialUpdatePanel`这个文件可能是一个自定义的UpdatePanel控件,它可能扩展了标准UpdatePanel的功能或者提供了一些特殊的...
总结起来,`Ajax`、`UpdatePanel`、`ScriptManager`和`UpdateProgress`共同构建了一个高效的部分页面更新机制,能够在不刷新整个页面的情况下更新内容,并通过`UpdateProgress`向用户提供反馈,提高了Web应用的交互...
下面是一个使用ScriptManager和UpdatePanel的示例,展示了如何实现部分页面更新。在这个例子中,当用户更改下拉框的选择时,日期控件(Calendar1)的背景颜色会根据选择的颜色值改变,而无需刷新整个页面。 ```html...
以下是一个使用UpdatePanel和ScriptManager控件实现部分页面刷新的简单示例。 ```html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
服务器处理这些控件的更改,然后将更新后的HTML返回到客户端,由ScriptManager替换UpdatePanel内的内容,从而实现局部刷新。 2. **属性与配置:** UpdatePanel有若干属性,如`ContentTemplate`用于放置需要异步更新...
使用UpdatePanel,开发者可以避免繁琐的JavaScript和AJAX编程,只需在页面中添加UpdatePanel和ScriptManager控件,就能轻松实现局部更新。以下是一个基础的UpdatePanel定义: ```xml <asp:UpdatePanel ID=...