英文版见:http://dflying.dflying.net/1/archive/96_introduction_to_atlas_updatepanel.html
UpdatePanel是ASP.NET Atlas中很重要的一个控件。它把传统的ASP.NET程序与最新的Web 2.0 AJAX无缝的连接在一起。如果你已经有一些基于ASP.NET的网站,UpdatePanel可以让你通过很小的修改轻松的实现AJAX。如果你并不很熟悉AJAX相关的技术比如JavaScript/DOM等,UpdatePanel更是可以让你不用书写一行客户端脚本而实现酷酷的AJAX应用。所需要的就是把需要动态更新的部分放置于一个UpdatePanel中,这一点与MagicAjax Framework有着异曲同工之妙。
使用UpdatePanel很简单,只需要如下几个步骤:
-
用ASP.NET实现你的设计,此刻你并不需要考虑任何有关AJAX的问题,就像普通的ASP.NET程序一样。
-
在页面上添加一个ScriptManager对象,并设定属性EnablePartialUpdates=true
-
将你希望动态更新的部分用UpdatePanel包围起来
-
为你添加的UpdatePanel设定Event Trigger
只要这些步骤就够了,不需要考虑XMLHTTPRequest或者ActiveX对象,也不需要书写客户端的脚本或者考虑如何与服务器通信,所有的细节,Atlas已经为你做好了。
Atlas UpdatePanel的实现也很简单:浏览器如同普通PostBack一样Post回服务器,服务器处理后再次发送给浏览器,这个过程就和传统的页面模型一样。但到达客户端时ScriptManager只更新位于UpdatePanel中的内容和ViewState。
使用UpdatePanel中应该注意的几个问题:
必须指定ScriptManager 中的属性EnablePartialUpdates=true,这样ScriptManager才会将普通的PostBack转化为对服务器的异步调用,也就是AJAX的方法。否则页面只会与传统的ASP.NET一样刷新。
其次,UpdatePanel提供两种引发异步PostBack的Trigger:
-
ControlValueTrigger:当某个控件的某个指定的属性变化时更新。例如:ControlID="dropDownList1" PropertyName="SelectedValue"
-
ControlEventTrigger:当某个控件发出指定事件时更新。例如:ControlID="button1" EventName="Click"
最后,每个UpdatePanel都有两种更新的方式:
-
Always:每次AJAX PostBack或是普通PostBack的时候都会更新该Panel的内容
-
Conditional:只有满足如下某一条件时才更新该Panel的内容:
-
当Panel中的某个控件引发了PostBack时
-
当Panel所指定的某个Trigger被引发时
-
当Panel的Update()方法在Codebehind中被调用时
一小段UpdatePanel的例子
1
<atlas:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" />
2
<atlas:UpdatePanel ID="up1" runat="server">
3
<Triggers>
4
<atlas:ControlValueTrigger ControlID="dropDownList1" PropertyName="SelectedValue" />
5
<atlas:ControlEventTrigger ControlID="button1" EventName="Click" />
6
</Triggers>
7
<ContentTemplate>
8
Content Here. e.g. TextBox, GridView
9
</ContentTemplate>
10
</atlas:UpdatePanel>
11
另外还有两个有用的Atlas特性:UpdateProgress控件可以在更新的等待时间自动显示一段提示信息,可以是一段“更新中……”文字也可以是GIF图像或者是更复杂的定制的内容。还有Atlas提供的错误处理机制,以便集中处理更新中可能发生的错误。目前有很多AJAX程序的错误处理机制设计的并不是很好,包括Windows Live Mail。
(这篇文章我先写的英文版,然后才是这个翻译版本。自己本身语言能力有限,有些地方生硬甚至语句不通顺,还请各位见谅。今后我会勤加练习用中文表达。更多的Atlas文章可以参考我的英文Blog:http://dflying.dflying.net/ )
评论:
# re: Atlas UpdatePanel简要介绍 2006-03-25 14:23 |
要如何才能把UpdateProgress放在右上角啊
回复
# re: Atlas UpdatePanel简要介绍 2006-03-25 14:28 |
@AlexHe.cs
您可以认为UpdateProgress就是一个普通的类似Label的ASP.NET控件,可以采用CSS定位等方法将其置于页面上的任何位置。
回复
# re: Atlas UpdatePanel简要介绍 2006-03-25 15:04 |
# re: Atlas UpdatePanel简要介绍 2006-03-25 15:07 |
# re: Atlas UpdatePanel简要介绍 2006-03-25 15:45 |
不错! 正打算在博客园发表评论的页面中采用Atlas。
回复
# re: Atlas UpdatePanel简要介绍 2006-03-25 15:51 |
@DW
@WL
@dudu
Thanks and let\'s make it better ;-)
@dudu
最简单的方法就是用两个UpdatePanel了,一个给Comment List一个给Comment Form,方便与现有系统集成。
回复
# re: Atlas UpdatePanel简要介绍 2006-03-25 15:54 |
跟asp.net上的那个视频说的一样嘛,哈哈
回复
# re: Atlas UpdatePanel简要介绍 2006-03-25 16:32 |
呵呵,昨天刚用上,今天就有文章了.
对于treeview,数据量较大用updatepanel好象很慢.
回复
# re: Atlas UpdatePanel简要介绍 2006-03-25 16:35 |
@Dflying Chen
谢谢你的建议!我正打算采用这种方式。
回复
# re: Atlas UpdatePanel简要介绍 2006-03-25 19:27 |
有一点补充:关于UpdateProgress,它支持取消操作,当你等待很久时需要取消你的操作时,还可以在ProgressTemplate内放一个LinkButton(或者普通的button)然后将它的控件ID设为:abortButton就行了,(注意控件ID一定要是abortButton,它内部是这样去找控件的 Control control1 = this.FindControl("abortButton");
)
回复
# re: Atlas UpdatePanel简要介绍 2006-03-25 19:30 |
@neuhawk1
是的,用在TreeView的时候好像都比较慢,这点我也深有体会.
回复
# re: Atlas UpdatePanel简要介绍 2006-03-25 20:22 |
@阿不
如果有好多个UpdateProgress的话会怎么样呢?我想需要进一步研究。
回复
# re: Atlas UpdatePanel简要介绍 2006-03-25 21:37 |
@Dflying Chen
原来也没试过,刚好刚刚开着IDE,试了一下。当有多个UpdateProgress的时候,使用UpdatePanel时会同时出现这些UpdateProgress的提示。不会像ScriptManager一样,一个页面只允许一个实例。
回复
# re: Atlas UpdatePanel简要介绍 2006-03-27 16:00 |
# re: Atlas UpdatePanel简要介绍 2006-03-27 17:52 |
@阿不
UpdateProgress理论上也不应该有多个。
回复
# re: Atlas UpdatePanel简要介绍 2006-03-27 19:15 |
@Dflying Chen
是的,出现多个UpdateProgress是不大合理的.关于abortButton,至少在目前的版本(March CTP)还没有看到一些变化.另外目前的版本虽然增加了WebPart对Firefox的拖拉支持,但是在使用过程却出现了更多的问题.对第三方控件的支持很不好.
回复
# re: Atlas UpdatePanel简要介绍 2006-03-27 19:35 |
# re: Atlas UpdatePanel简要介绍 2006-03-27 19:59 |
如FreeTextBox,再有博客园里Thin写的日期控件,等.支持都不是很好.今天还发现一个问题,在原来的版本可以运行得很好,可在新版本里却会出现问题.搞得我今天好烦.
回复
# re: Atlas UpdatePanel简要介绍 2006-03-27 20:07 |
@阿不
Ooops,确实跨平台的JavaScript程序比较难以完美的实现,特别是像Atlas这样大的架构。只能期待Release的时候会少些Bug吧……
回复
# re: Atlas UpdatePanel简要介绍 2006-03-27 20:40 |
# re: Atlas UpdatePanel简要介绍 2006-03-27 22:43 |
@rimbaud
发展的趋势就是越来越简化阿;-)
回复
# re: Atlas UpdatePanel简要介绍 2006-03-28 13:05 |
atlas ajax框加哪里有的下啊
还是包含在framework 2.0 里的
回复
# re: Atlas UpdatePanel简要介绍 2006-03-28 13:35 |
@扬长而去
是一个单独的开发包,在 atlas.asp.net 下.
回复
# re: Atlas UpdatePanel简要介绍 2006-03-29 18:15 |
新手上路,
小弟路经此地请问这个控件哪里有的下或有具体例程吗?谢谢!
回复
# re: Atlas UpdatePanel简要介绍 2006-03-29 18:20 |
# re: Atlas UpdatePanel简要介绍 2006-03-29 20:36 |
# re: Atlas UpdatePanel简要介绍
2006-03-29 20:36 |
@H_J_H
没有针对1.1的,如果您需要,可以考虑使用第三方的Atlas类库。
回复