DataList的分页
DataList分页1
<% @ Page Language=C# %>
<% @ Import Namespace=System.Data %>
<% @ Import Namespace=System.Data.OleDb %>
<Script Language=C# Runat=Server>
/*
Create By 飞刀
http://www.aspcn.com
2001-7-25 01:44
Support .Net Framework Beta 2
*/
OleDbConnection MyConn;
int PageSize,RecordCount,PageCount,CurrentPage;
public void Page_Load(Object src,EventArgs e)
{
//设定PageSize
PageSize = 10;
//连接语句
string MyConnString = Provider=Microsoft.Jet.OLEDB.4.0; Data Source=+Server.MapPath(.)+..\\DataBase\\db1.mdb;;
MyConn = new OleDbConnection(MyConnString);
MyConn.Open();
//第一次请求执行
if(!Page.IsPostBack)
{
ListBind();
CurrentPage = 0;
ViewState[PageIndex] = 0;
//计算总共有多少记录
RecordCount = CalculateRecord();
lblRecordCount.Text = RecordCount.ToString();
//计算总共有多少页
PageCount = RecordCount/PageSize;
lblPageCount.Text = PageCount.ToString();
ViewState[PageCount] = PageCount;
}
}
//计算总共有多少条记录
public int CalculateRecord()
{
int intCount;
string strCount = select count(*) as co from Score;
OleDbCommand MyComm = new OleDbCommand(strCount,MyConn);
OleDbDataReader dr = MyComm.ExecuteReader();
if(dr.Read())
{
intCount = Int32.Parse(dr[co].ToString());
}
else
{
intCount = 0;
}
dr.Close();
return intCount;
}
ICollection CreateSource()
{
int StartIndex;
//设定导入的起终地址
StartIndex = CurrentPage*PageSize;
string strSel = select * from Score;
DataSet ds = new DataSet();
OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSel,MyConn);
MyAdapter.Fill(ds,StartIndex,PageSize,Score);
return ds.Tables[Score].DefaultView;
}
public void ListBind()
{
score.DataSource = CreateSource();
score.DataBind();
lbnNextPage.Enabled = true;
lbnPrevPage.Enabled = true;
if(CurrentPage==(PageCount-1)) lbnNextPage.Enabled = false;
if(CurrentPage==0) lbnPrevPage.Enabled = false;
lblCurrentPage.Text = (CurrentPage+1).ToString();
}
public void Page_onClick(Object sender,CommandEventArgs e)
{
CurrentPage = (int)ViewState[PageIndex];
PageCount = (int)ViewState[PageCount];
string cmd = e.CommandName;
//判断cmd,以判定翻页方向
switch(cmd)
{
case next:
if(CurrentPage<(PageCount-1)) CurrentPage++;
break;
case prev:
if(CurrentPage>0) CurrentPage--;
break;
}
ViewState[PageIndex] = CurrentPage;
ListBind();
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<form runat=server>
共有<asp:Label id=lblRecordCount ForeColor=red runat=server />条记录
当前为<asp:Label id=lblCurrentPage ForeColor=red runat=server />/<asp:Label id=lblPageCount ForeColor=red runat=server />页
<asp:DataList id=score runat=server
HeaderStyle-BackColor=#aaaadd
AlternatingItemStyle-BackColor=Gainsboro
EditItemStyle-BackColor=yellow
>
<ItemTemplate>
姓名:<%# DataBinder.Eval(Container.DataItem,Name) %>
<asp:LinkButton id=btnSelect Text=编辑 CommandName=edit runat=server />
</ItemTemplate>
</asp:DataList>
<asp:LinkButton id=lbnPrevPage Text=上一页 CommandName=prev OnCommand=Page_onClick runat=server />
<asp:LinkButton id=lbnNextPage Text=下一页 CommandName=next OnCommand=Page_onClick runat=server />
</form>
</body>
</html>
用viewstate传递分页的信息,最重要的就是这一句 MyAdapter.Fill(ds,StartIndex,PageSize,Score);
================================================================================
DataList分页2
Repeater和DataList控件提供了一个快速、灵活的表现数据的方式,但是,它们没有内建的分页功能;DataGrid控件提供了内建的分页功能,但它的结构比较复杂。下面就用PagedDataSource类实现Repeater和DataList的分页。 PagedDataSource封装了DataGrid的分页属性,我们可以象DataGrid那样进行分页。代码如下:
<%@ Page Language=C# %>
<%@ import namespace=System.Data %>
<%@ import namespace=System.Data.OleDb %>
<script language=C# runat=server>
public void Page_Load(Object src,EventArgs e) {
OleDbConnection objConn=new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0; Data Source= +
Server.MapPath(../aspxWeb.mdb));
OleDbDataAdapter objCommand=new OleDbDataAdapter(select * from Document,objConn);
DataSet ds=new DataSet();
objCommand.Fill(ds);
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = ds.Tables[0].DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 5;
int CurPage;
if (Request.QueryString[Page] != null)
CurPage=Convert.ToInt32(Request.QueryString[Page]);
else
CurPage=1;
objPds.CurrentPageIndex = CurPage-1;
lblCurrentPage.Text = 当前页: + 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);
Repeater1.DataSource=objPds;
Repeater1.DataBind();
}
</script>
<html>
<head>
<title>Repeater控件分页的例子</title>
<meta http-equiv=Content-Type content=text/html; charset=gb2312>
<style>
P,TD,DIV,SPAN {font-size:9pt}
</style>
</head>
<body>
<form name=form1 method=POST runat=server>
<div style=padding:5px;background-color:#dedede>
<asp:label ID=lblCurrentPage runat=server></asp:label></td>
<td> <asp:HyperLink id=lnkPrev runat=server>上一页</asp:HyperLink>
<asp:HyperLink id=lnkNext runat=server>下一页</asp:HyperLink>
</div>
<hr size=1 color=#000099/>
<asp:Repeater ID=Repeater1 runat=server>
<Itemtemplate>
<div style=padding:5px;background-color:#dedede>
<%# DataBinder.Eval(Container.DataItem, Title) %>
</div>
</Itemtemplate>
</asp:Repeater>
</form>
</body>
</html>
=============================================================================
http://www.aspsky.net/article/list.aspx?page=3&ClassID=1&NclassID=44
http://www.csdn.net/develop/Read_Article.asp?Id=14245