- 用GridView自带的方法实现分页功能。
- 用ViewState记录GridView分页后各个分页面的CheckBox的选中状态。
- GridView不同分页面之间的跳转只是刷新当前页面,并没有跳出当前Web页面的生命周期。(这也是ViewState的作用范围)
- 如果想要在不同Web页面之间跳转实现信息传递的话,可以用Cookie,Session等。
- 当我们写Asp.net程序的时候避免不了的是从数据库中取数据,然后将这些数 据显示在页面上,当数据非常多的时候我们又很自然的想到了把这些数据进行分页显示。分页在Asp.net中用到的地方是非常多的,我们可以自己去编写分页 程序,也可以用Asp.net给我们封装好的。这里我们用Asp.net封装好的分页功能,并用ViewState实现实现不同分页面的CheckBox 的状态:
- 用GridView去显示数据的时候避免不了的与CheckBox的结合(即: 将GridView的每一行的第一列设置为CheckBox)方法如下:可以用拖控件的方法去创建GridView然后在GridView控件中加入 CheckBox列。body的代码如下:其中onpageindexchanging="GridView1_PageIndexChanging"表 示选择不同分页面时所调用的方法,AllowPaging="True"表示此GridView允许自带的分页,PageSize=“5”表示每页的行数 为5(可以在GridView1的属性中去选择填写)
- 页面布局时注意:若用拖控件和写代码混合生成界面时,一定要保 证...aspx.designer.cs中有所有控件的注册信息(这也是为什么许多从网上复制的代码拷贝到自己的工程当中出错的原因之一,初学者很容易 犯这样的错误)。如:上面GridView,CheckBox,Button1, Button2的注册信息为:
- 用GridView分页去显示数据的时候有一个弊端:GridView只能记录 当前页面所显示的数据,而不去保存其他页面的控件状态,比如:我在第一页上选择了1行(在CheckBox上打个对号),当我们跳到下一页之后再返回时, 选中的那行又恢复到了一开始的状态(没选中)。
- 想要解决这个问题也有很多方法,比如Session,Cookie等。这里我选 择用ViewState变量去记录所有分页面CheckBox的状态(【注】ViewState的作用是:变量可以在跨分页面情况下保存其原来的值,也就 是说:其变量所保存的值不会因为我们分页面的跳转而发生改变,但如果是不同的Web页面之间的跳转的话,ViewState就无能为力了,但是我们可以换 用Session和Cookie实现)
- 我们定义一个Pagination类,类中的方法实现CheckBox具体的状态。代码如下:
- 假设我们用赋值的方式模拟从数据中读取数据,生成DataTable,然后将此DataTable绑定到GridView数据源中实现分页显示。代码如下:
- 如果想实现不同Web页面之间数据信息的传递,将上面的代码中ViewState字样换成Session即可,那么在其他页面就可以根据Session["Name"]中的Name进行区别获取Session信息。【这是我在博客园发表过的一篇文章,看了访问量还挺多,于是乎就在这里也晒一晒O(∩_∩)O哈哈~】