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那样进行分页。代码如下:
&nbsp;
<%@ 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>&nbsp;<asp:HyperLink id=lnkPrev runat=server>上一页</asp:HyperLink>
  <asp:HyperLink id=lnkNext runat=server>下一页</asp:HyperLink>&nbsp;
</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

原文地址:https://www.cnblogs.com/yamajia/p/532537.html