DataList分页办法核心原理操纵PagedDataSource对象PagedDataSource类封拆了DataGrid 控件属性些属性使 DataGrid 施行分页下面PagedDataSource公共属性:
AllowCustomPaging 获取或设置指示否启用自定义分页值
AllowPaging 获取或设置指示否启用分页值
Count 获取要从数据源利用项数
CurrentPageIndex 获取或设置当前页索引
DataSource 获取或设置数据源
DataSourceCount 获取数据源项数
FirstIndexInPage 获取页第索引
IsCustomPagingEnabled 获取值该值指示否启用自定义分页
IsFirstPage 获取值该值指示当前页否首页
IsLastPage 获取值该值指示当前页否页
IsPagingEnabled 获取值该值指示否启用分页
IsReadOnly 获取值该值指示数据源否只读
IsSynchronized 获取值该值指示否同步对数据源拜候(线程平安)
PageCount 获取显示数据源所有项所需要总页数
PageSize 获取或设置要单页上显示项数
VirtualCount 获取或设置利用自定义分页时数据源现实项数
何利用 PagedDataSource对象停止DataList分页呢(网上有多讲DataList分页文章有些糊弄人有还无法起感化我上当过次本文我颠末人理论经历得顺利施行希望对各人有所帮忙)
现起头拉
第步取出数据datatable获得dataview付给PagedDataSource对象
DataView objView = objTable。
DefaultView;
PagedDataSource objPds = new PagedDataSource();
objPds。DataSource = objView;
第二步PagedDataSource对象objPds设置
objPds。
AllowPaging = true;
objPds。PageSize = 4;
objPds。CurrentPageIndex = int。Parse(ViewState["pageindex"]。
ToString());
上面两段代码都写BindData()函数供每次点击分页按钮时挪用BindData()函数下:
private void BindData()
string sql = "SELECT * From team";
DataTable objTable = data。
GetDataTable(sql);
if (objTable != null && objTable。Rows。Count > 0)
DataView objView = objTable。
DefaultView;
PagedDataSource objPds = new PagedDataSource();
objPds。DataSource = objView;
objPds。
AllowPaging = true;
objPds。PageSize = 4;
objPds。CurrentPageIndex = int。Parse(ViewState["pageindex"]。
ToString());
if (!objPds。IsFirstPage)
lkPre。Visible = true;
else
lkPre。
Visible = false;
if (!objPds。IsLastPage)
lkNext。Visible = true;
else
lkNext。
Visible = false;
dlData。DataSource = objPds;
dlData。DataBind();
此行我们已经数据交给了PagedDataSource剩下分页操纵PagedDataSource 停止处置能各人留意了数据交付完好数据交付数据量大会形成定效率低下过里暂时考虑问题有兴趣伴侣起切磋下
上面第三行代码 ViewState["pageindex"] 用来控造PagedDataSource当前页我们Page_Load事务和第三步要函数来详细讲解何操纵 ViewState["pageindex"]控造当前页
BindData()函数面部门控造向前向按钮显隐再多说
第三步分页控造
第二步说过操纵 ViewState["pageindex"] 来控造当前页了页面加载时候显示第页我们当要Page_load事务 ViewState["pageindex"]置0
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
ViewState["pageindex"] = "0";
BindData(); }
我们需要加两按钮(Previous、Next)来点击停止分页控造
PREVIOUS PAGE>
NEXT PAGE
两按钮 OnCommand都IndexChanging()函数我们通过CommandArgument(pre和next)来区分底向前翻还向翻下面IndexChanging()函数
protected void IndexChanging(object sender, EventArgs e)
string strCommand = ((LinkButton)sender)。
CommandArgument。ToString();
int pageindex = int。Parse(ViewState["pageindex"]。ToString());
if (strCommand == "pre")
pageindex = pageindex - 1;
else
pageindex = pageindex 1;
ViewState["pageindex"] = pageindex;
BindData();
至此我们分页函数已经写完了里还有些工具没有说比显示共几笔记录当前第几页共几页及每页页码相信看懂了上面所说些工具还容易写出来
总结下我们前台写好DataList期待数据而数据由PagedDataSource供给分页通过我们新加两ImageButton来控造ViewState进而达控造PagedDataSourceCurrentPageIndex来实现所其实DataList也没干啥事显示了每页数据罢了有点需要申明PagedDataSourceCurrentPageIndex从0起头也Page_load事务要讲ViewState置0而1缘故
Asp。
net供给了三功用强大列表控件:DataGrid、DataList和Repeater控件其只要DataGrid控件供给分页功用相对DataGridDataList和Repeater控件具有更高款式自定义性所多时候我们喜好利用DataList或Repeater控件来显示数据
实现DataList或Repeater控件分页显示有几种办法:
1、写办法或存储过程按照传入页数返回需要显示数据表(DataTable)
2、利用PagedDataSource类(位于System。
Web。UI。WebControls定名空间里)
本篇文章次要说利用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 src,EventArgs e)
OleDbConnection objConn=new OleDbConnection(@"Provider=Microsoft。
Jet。OLEDB。4。0; Data Source=c: est。mdb");
OleDbDataAdapter objCommand=new OleDbDataAdapter("select * from Users",objConn);
DataSet ds=new DataSet();
objCommand。
Fill(ds);
//对PagedDataSource 对象相关属性赋值
PagedDataSource objPds = new PagedDataSource();
objPds。
DataSource = ds。Tables[0]。DefaultView;
objPds。AllowPaging = true;
objPds。PageSize = 5;
int CurPage;
//当前页面从Page查询参数获取
if (Request。
QueryString["Page"] != null)
CurPage=Convert。ToInt32(Request。QueryString["Page"]);
else
CurPage=1;
objPds。
CurrentPageIndex = CurPage-1;
lblCurrentPage。Text = "Page: " CurPage。ToString();
if (!objPds。IsFirstPage)
lnkPrev。
NavigateUrl=Request。CurrentExecutionFilePath "?Page=" Convert。ToString(CurPage-1);
if (!objPds。IsLastPage)
lnkNext。
NavigateUrl=Request。CurrentExecutionFilePath "?Page=" Convert。ToString(CurPage 1);
//把PagedDataSource 对象赋给Repeater控件
Repeater1。
DataSource=objPds;
Repeater1。DataBind();