电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

实现DataList和Repeater控件的分页显示


发布日期:2018/12/29
 
提供了三个功能强大的列表控件DataGridDataList和Repeater控件但其中只有DataGrid控件提供分页功能相对DataGridDataList和Repeater控件具有更高的样式自定义性所以很多时候我们喜欢使用DataList或Repeater控件来显示数据

实现DataList或Repeater控件的分页显示有几种方法

写一个方法或存储过程根据传入的页数返回需要显示的数据表(DataTable)

使用PagedDataSource类

本篇文章主要说怎么使用PagedDataSource类实现DataList和Repeater控件的分页显示DataGrid控件内部也使用了PagedDataSource类PagedDataSource 类封装 DataGrid 控件的属性这些属性使 DataGrid 可以执行分页

PagedDataSource 类的部分公共属性

AllowCustomPaging 获取或设置指示是否启用自定义分页的值

AllowPaging 获取或设置指示是否启用分页的值

Count 获取要从数据源使用的项数

CurrentPageIndex 获取或设置当前页的索引

DataSource 获取或设置数据源

DataSourceCount 获取数据源中的项数

FirstIndexInPage 获取页中的第一个索引

IsCustomPagingEnabled 获取一个值该值指示是否启用自定义分页

IsFirstPage 获取一个值该值指示当前页是否是首页

IsLastPage 获取一个值该值指示当前页是否是最后一页

IsPagingEnabled 获取一个值该值指示是否启用分页

IsReadOnly 获取一个值该值指示数据源是否是只读的

IsSynchronized 获取一个值该值指示是否同步对数据源的访问(线程安全)

PageCount 获取显示数据源中的所有项所需要的总页数

PageSize 获取或设置要在单页上显示的项数

VirtualCount 获取或设置在使用自定义分页时数据源中的实际项数

这些属性是否和DataGrid的属性很相似?没错DataGrid控件就是使用PagedDataSource类来实现数据分页显示的 下面举个使用PagedDataSource类实现DataList和Repeater控件的分页显示的例子

public void Page_Load(Object srcEventArgs e)

{

OleDbConnection objConn=new OleDbConnection(@Provider=MicrosoftJetOLEDB; Data Source=c:\testmdb);

OleDbDataAdapter objCommand=new OleDbDataAdapter(select * from UsersobjConn);

DataSet ds=new DataSet();

objCommandFill(ds);

//对PagedDataSource 对象的相关属性赋值

PagedDataSource objPds = new PagedDataSource();

objPdsDataSource = dsTables[]DefaultView;

objPdsAllowPaging = true;

objPdsPageSize = ;

int CurPage;

//当前页面从Page查询参数获取

if (RequestQueryString[Page] != null)

CurPage=ConvertToInt(RequestQueryString[Page]);

else

CurPage=;

objPdsCurrentPageIndex = CurPage;

lblCurrentPageText = Page: + CurPageToString();

if (!objPdsIsFirstPage)

lnkPrevNavigateUrl=RequestCurrentExecutionFilePath + ?Page= + ConvertToString(CurPage);

if (!objPdsIsLastPage)

lnkNextNavigateUrl=RequestCurrentExecutionFilePath+ ?Page= + ConvertToString(CurPage+);

//把PagedDataSource 对象赋给Repeater控件

RepeaterDataSource=objPds;

RepeaterDataBind();

}

这样就可以很简单的实现DataList和Repeater控件的分页显示但这样做有个缺点就是每次都要把所有页的数据Select出来DataGrid也是这样这样会降低一点效率(大多时候体会不出来差别)如果使用第一种方法就可以只Select出当前页的数据(实现方法请查看有关文章)

上一篇:通过Cache实现通用的配置管理

下一篇:Net绘图如何给图片增加透明度