DataList分页
? <% @ 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>
總結
以上是生活随笔為你收集整理的DataList分页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在页面中导入文件
- 下一篇: Calendar如何只显示“一、二、三.