DataList分页

2021-03-22 15:35:28 浏览数 (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>

本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

0 人点赞