自动分页: dg1.AllowPaging = True;
自定义分页:dg1.AllowPaging = dg1.AllowCustomPaging = True;
1.自动分页
1)设置DataGrid控件的AllowPaging属性为True。
可以直接在属性面板中设置,也可以在DataGrid控件的属性生成器中设置
2)为DataGrid控件编写PageIndexChanged事件处理方法,代码如下:
---------------------------------------------------------------------------
DataGrid1.CurrentPageIndex = e.NewPageIndex;
//更改显示页索引后,要重新绑定DataGrid控件
datagridBind(); //这是一个用于绑定页面上DataGrid控件的方法
---------------------------------------------------------------------------
2.对自动分页的分析
首先,设置DataGrid控件dg1的AllowPaging属性为True
其次,设置dg1的PageSize属性(即单页上显示的项数)
三,为dg1的DataSource属性指定数据源(实现IEnumerable,如DataView、ArrayList、DataReader等)
四,执行方法 dg1.DataBind(),为控件绑定数据
五,客户端触发dg1的PageIndexChanged事件
六,在事件处理方法中重新设置dg1的CurrentPageIndex属性,并再次执行dg1.DataBind()
自动分页之所以"自动",在于asp.net会根据PageSize属性,自动对dg1的数据源的数据项进行分割(分页),然后由dg1.CurrentPageIndex属性来决定显示数据源中的哪部分数据项
3.自定义分页 与 自动分页 的不同
以数据库中某表的123行数据为例:
自动分页:将123条数据取出存放到数据源(DataTable)中,若PageSize为10,则asp.net会自动知道分为11页,在每一次绑定数据源时,会根据CurrentPageIndex属性来显示特定页的数据行。比如CurrentPageIndex为2的话,在控件中会显示数据源中的第20-29行。
自定义分页:这时候asp.net不会自动计算出要将数据项分成多少页,也不会将数据源中的数据项进行分割,每次绑定的时候,datagrid总是显示数据源中的前10项(PageSize=10)。
所以,在自定义分页中,不能象自动分页那样总是保持数据源DataSource属性值不变。在自定义分页中,显示不同页码的页时,必须确保datagrid的DataSource属性值不同,数据源中只有当前页要显示的数据项。如果每次绑定时数据源中的数据项都是一样的,则每一页显示的内容也会是一样的。因为,数据源中的数据项不会自动分割了,这是两者最大的区别。
4.导航按钮
无论是自动分页或自定义分页,都可以设置 "显示导航按钮" 或者不。(在属性生成器中设置)
如果"显示导航按钮",必须要知道总共要分为多少页(对于自动分页,asp.net能自动计算出)、当前页的页码。还需要为PageIndexChanged事件的编写处理方法。
如果不"显示导航按钮",则需要放置"上一页"、"下一页"、"首页"、"末页"等Button或LinkButton控件
并为这些控件编写事件,来代替PageIndexChanged事件的编写。不
自动分页且不"显示导航按钮"的情况,很可能被误认为是自定义分页,一定要注意。
5.自定义分页("显示导航按钮")
1) dg1.AllowPaging = dg1.AllowCustomPaging = True
2)指定dg1.PageSize和dg1.VirtualItemCount属性
因为,自定义分页时,不会自动计算出总页数,需要指定控件dg1的VirtualItemCount属性,用这个属性和PageSize属性来计算总页数。
3)为dg1编写PageIndexChanged事件处理方法。事件方法代码中,要有2个功能
一,重新设置dg1.CurrentPageIndex。通常为
dg1.CurrentPageIndex = e.NewPageIndex;
二,为dg1绑定数据。
要确保CurrentPageIndex的值不同,dg1的数据源中的数据项也不同。也就是说,要保证dg1的数据源中只能有当前页要显示的那些数据项。
4) 这样的确有些麻烦,使用PagedDataSource类对象则可以避免为不同页生成不同的数据源。
PageIndexChanged事件处理方法代码:
--------------------------------------------------------------------------
PagedDataSource pds = new PagedDataSource();
DataSet dSet = m_audit.GetDSet(); //调用某方法,返回一个DataSet对象
DataView dView = dSet.Tables[0].DefaultView;
pds.DataSource = dView;
pds.AllowPaging = true; //自动分页
pds.PageSize = dg1.PageSize;
pds.CurrentPageIndex = dg1.CurrentPageIndex; //这就是关键所在
dg1.DataSource=pds; //绑定数据。以pds对象为隔离对象,避免了
dg1.DataBind(); //为显示不同页面,而构造不同的数据源
---------------------------------------------------------------------------
来源:https://www.cnblogs.com/zqf620/archive/2007/01/20/625734.html