DataList分页

    /*  CreateBy飞刀  http://www.aspcn.C#
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

<% @ 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,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/2400

发表评论