1. 前言
开发项目中经常会遇到要求用户选择列表中数据的问题,例如选择允许参加某个活动 的用户、选择允许参加某个项目的省市或地区,在数据量较小的情况下,我们可以把所有数据使用任何一 种数据绑定控件显示出来并在每一个数据项前面显示复选框,但在数据量比较大时同时显示全部数据显然 不太合适,我们首先考虑到的是使用分页。但是在使用分页后问题也随之而来,如何在切换分页时同时保 持已选中项目,有些开发人员可能使用服务器端代码编写保存在Session中,这种方式最大的弊端在于每 次都向服务器端提交,并且由于这些选中的数据只需要在当前页面使用,所以还白白的占用了Session。
对于这类问题,我们现在有了更好的选择,使用ASP.NET AJAX和JQuery结合在一起实现翻页选择 。
2. 相关理论
使用ASP.NET AJAX中的ScriptManager和UpdatePanel控件我们可以轻松的 实现GridView的分页,现在所需要考虑的就是在分页结束后根据用户的选择使相应的复选框处于选中状态 。实际上在AJAX.NET中,微软为我们提供了完全的AJAX请求生命周期控制,以下事件会在客户端触发:
Application.init——当某一个页面第一次请求时触发。在异步回发中不会触发该事 件
PageRequestmanager.initializeRequest——在一个异步请求开始之前触发,相当 于预始化阶段
PageReqeustManager.beginRequest——在一个异步请求开始之前触发
PageRequestManager.pageLoading——在客户端收到服务端的异步请求响应并且更新 UpdatePanel之前触发该事件
PageRequestManager.pageLoaded——在客户端收到服务 端的异步请求响应并且更新UpdatePanel中的内容更新后触发该事件,页面初始化加载时也会触发该事件 。
Application.load——在普通和异步回发期间触发该事件
PageRequestManager.endRequest——在完成一次异步请求后不管有没有异常发生均会 触发该事件
Application.unload——当用户离开或重新加载该页面时触发该事件
通过以上分析,我们只需要在分页异步请求完成后根据选中的状态更新相应的复选框即可。在取 得复选框时可以使用JQuery中强大的选择器,例如以下代码选中了某个GridView中的全部复选框。
$('div[#<%=gdvCustom.ClientID %>] input[type=checkbox]')
根据以上分析,以下示例代码展示了最终的运用结果。