最近开始了ASP.NET AJAX的全面学习。在服务端编程这块主要有几个服务器控件负责,他们分别为:ScriptManager,Timer,UpdatePanel,UpdateProgress.
先来说说ScriptManager.它有个方法registerAsyncPostBackControl(控件),可以注册页面上的任何控件为异步传送按钮。还有个方法叫AsyncPostBackError的来着,在这个方法里面可以定义属于自己的错误显示方式。
UpdatePanel,这个控件的用法有很多种,并且有几个属性是非常重要的。它们分别是:UpdateMode,ChildrenAsTrigger,Triggers.通过这几个属性的组合能产生很多的异步页面更新的效果.UpdateMode的值可以为:always,conditional;ChildrenAsTrigger的属性值可以为:True,False.Triggers的属性值为一个包含两种类型的Trigger集合(AysncPostBackTrigger,PostBackTrigger).
现在假设有个UpdatePanel控件,我来分别设置这些属性值的组合。
UpdateMode(always)+ChildrenAsTrigger(true):不论引发异步传送的控件是否放在UpdatePanel里面,该UpdatePanel都会更新.
UpdateMode(always)+ChildrenAsTrigger(FALSE):系统不允许这样设置
UpdateMode(Conditional)+ChildrenAsTrigger(false):放在该Updatepanel里面的控件无法引发异步传送,此时如果想要达到更新该UpdatePanel控件的效果,有两个方法:1.用UpdatePanel的Update()方法2.设置UpdatePanel的Triggers属性。
方法一: 该方法有个局限型,不能是该UpdatePanel控件里面的控件引发的事件,因为里面控件不能进行异步事件。只有通过ScriptManager的registerAsyncPostBackControl(控件)注册一个可以异步回发的控件,然后在他的触发事件里面引用该UpdatePanel的Update()方法达到更新该UpdatePanel的效果。
方法二:设置成Trigger的控件可以在该UpdatePanel里面也可以再它外面,如果设置成功的话,通过触发这个设置成该UpdatePanel的Trigger的控件,就能达到更新的效果。
UpdateMode(Conditional)+ChildrenAsTrigger(true):放在该UpdatePanel里面的控件能引发异步会发,而且会将结果更新到该UpdatePanel里面,该UpdatePanel外面的控件也可以通过设置该UpdatePanel的trigger属性达到效果。
UpdateProgress控件。该控件的作用为当程序正在进行异步回发的时候,为了让等待的结果呈现给用户之前显示的一种友好界面.
它的associatedUpdatePanelID属性可以设置为与它相搭的UpdatePanel,如果该UpdatePanel再进行异步回发那么该UpdateProgress就会显示它的友好界面。如果与其相搭的UPdatePanel控件是嵌套结构的话,那么里层的UpdatePanel控件更新的话,该UpdatePanel也会显示的
<updatePanle1>
<updatePanle2>
<updatePanle3></updatePane3>
</updatePanel2>
</updatePanel1>
<updateProgress associatedUpdatePanelID=UpdatePan2/>
那么当UpdatePanel3进行更新的话,该UpdateProgress也是会显示出来的。
Timer:这个控件主要是用来进行循环回发的,它的属性InterVal属性为间隔多长时间引发它的trck事件。
timer可以放在UpdatePanel里面也可以放在外面,但如果要达到异步回发的效果的话,可以用 registerAsyncPostBackControl(控件) 来注册它。