ListView实现分页

ListView实现分页有两种方式,第一种通过DataPager控件。第二种是编写sql语句实现。第一种是一次性将数据从数据库中取出。

只适用于数据量小的分页。

1、通过DataPager控件实现分页:

1、右击项目-添加新项-添加数据集

2.将需要的表拖进数据集

3.在数据集里可以添加查询语句。

4.在页面中添加ObjectDataSource控件、DataPager控件、ListView控件。将数据集绑定给ObjectDataSource控件,

在将ListViw控件的DataSourceID设置为ObjectDataSource的id。然后设置DataPager控件的PagedControlID为listView的id。这样就可以绑定给ListView控件了。当然在ListView控件中选择分页也会自动在内部创建DataPage控件。

这样实现的分页是查询出表中所有的数据,并不适合数据量大分页。

第二种通过编写sql语句实现:

1.在数据集中添加表,在添加查询,查询语句为:

select * from (select *,Row_number() over(order by id) rownum from gooodsInfo)  t   where
t.rownum > @startRowIndex and  t.rownum <= @startRowIndex + @maximumRows.

ps:Row_number() 是SqlServer中的内置函数,作用是获取结果集的序号  over(order by id) 是根据id来排序。Row_number()必须结合over来使用。rownum是别名

上面使用子查询的原因是如果是select * from  表名  where 字段=...  这样的写法,这里的字段是从表里去拿的。如果你要用序号,表里是没有序号的,是会报列名无效的。所以必须用子查询。

上面的两个参数@startRowIndex 表示开始的行数,@maximumRows表示本页的行数,这里的参数名称不能随便命名的。这里的参数必须跟ObjectDataSource

中的startRowIndex参数和maximumRows相同。方法命名为GetPagedData。

然后在添加sql语句。选择select(返回单个值)。这个方法用于返回表中有多少行。

先按照正常的流程配置ObjectDataSource,让ListView自动生成Template,再修改ObjectDataSource的EnablePaging = “True”,SelectCountMethod设置为取得行数的方法。 然后在把SelectMethod 设置为上面添加的GetPagedData。

 

DataPager的PageSize属性为一页的条数。DataPager中按钮显示风格由Fields中的字段设置,可以放置多个字段,分NextPreviousPagerField
(上一页、下一页、首页、末页等)、NumericPagerField(数字页号)、TemplatePagerField用模板自定义。在代码中的Fields中修改。
NextPreviousPageField主要属性:ButtonCssClass: 按钮的样式;ButtonType,按钮渲染成什么
(Button按钮、Link超链接、Image图片);
FirstPageImageUrl,【第一页】按钮图片地址;
FirstPageText 【第一页】 按钮文本
showFirstButton,是否显示【第一页】
NumericPageField主要属性:ButtonCount,数字的个数;按钮渲染成什么(Button、Link、Image);CurrentPageLabelCssClass当前页文本的样式:NumericButtonCSSClass数字按钮的样式。

 

posted @ 2017-10-25 16:39  石禹  阅读(2358)  评论(0编辑  收藏  举报