我的AjaxPage对象续-一分钟让你的UserControl变成UpdatePanel

简述:通过Callback方式扩展用户控件实现类似UpdatePanel的功能,无需更改代码,只要将用户控件继承于AjaxUserCtrl即可自动将Postback方式转换为无刷新回调方式,并可随意切换两种方式,简单快捷,一分钟就会。


本文是上一篇文章我的AjaxPage对象(Asp.NET 1.1)-借用2.0的Callback实现无刷新回调的延续,在实现Callback方法以后,这成了我目前所做的系统在提高用户体验和处理复杂页面时一个重要的补充和提升,但是就像wwonion在评论中提到的一样,单纯应用Callback方式只能在较小的场合,无法简单的处理类似DataGrid的复杂控件的Callback问题,而且原有的逻辑处理也需要移动到RaiseCallbackEvent方法中进行,如果需要在Postback和Callback方式中切换,必须放置两份代码,造成了程序复杂度增加和维护困难。

这时候,最好的方法就是能够实现类似Atlas的UpdatePanel的功能,只需要在容器类控件放置控件,按照Postback的方式撰写代码,系统自动将Postback转换为Callback方式调用,只更新该容器类控件内容,无需专门实现Callback接口和方法,经过一番思考和研究以后,对原来的AjaxPage对象进行扩展并创立了一个基于UserCtrl的AjaxUserCtrl用户控件对象,只需要将原来的用户控件继承于AjaxUserCtrl并放置在AjaxPage页面上,不需要更改任何代码,就可以让您的用户控件实现无刷新的效果了。

具体如何实现就不细讲了,大家下载代码一试就知道. 目前的代码是针对1.1的,使用2.0的朋友下载例子稍加改动就可以实现同样的功能了。

代码下载:
https://files.cnblogs.com/abei108/CallbackDemo2.rar



UpdatePanelUC是一个继承于AjaxUserCtrl的用户控件,全部按照Postback方式书写,将其继承的类改为System.Web.UI.UserControl同样可以运行。
UpdatePanelUC代码

在AjaxDemo.aspx中演示了Postback、Callback以及UpdatePanel模式的效果,可以看到我们只是简单将上面写好的UpdatePanelUC拖拽在该页面中,并且放置同样的用户控件不会互相影响

在SingleForm.aspx则是新建一个WebForm,使其从AjaxPage继承,然后将UpdatePanelUC拖拽到页面上,执行,你会看到该控件以Callback方式执行,非常轻松。

本来在第一篇文章写完不久就有这个想法,但是工作太忙就搁下来了,最近才有时间继续进行研究,刚写好就发出来,希望能够抛砖印玉,多与大家交流,不对之处还请大家斧正。

附AjaxPage和AjaxUserCtrl代码
AjaxPage代码

AjaxUserCtrl代码



posted on 2006-09-12 10:32  Gao.Steven  阅读(2691)  评论(9编辑  收藏  举报

导航