ASP.NET 2.0 DataList的分页
2010-12-07 14:42
357 查看
方法一:
使用
PagedDataSource
对象和翻页按钮
LinkButton
。
Step 1:
初始化
PagedDataSource
Step 2:
设置
PagedDataSource
属性
Step 3:
绑定
PagedDataSource
到
DataList
Step 4:
设置翻页按钮
LinkButton
事件
OnCommand
,使用
ViewState[“PageIndex”]
记录当前页号
Step 5:
编写
OnCommand
关联函数
IndexChanging().
Step 6:
设置
DataList
显示数据,完成。
Source Code:
PageDataList.aspx
********************************************************************************
PagedDataList.aspx.cs
******************************************************************************
******************************************************************************
方法二:
使用
PagedDataSource
对象和翻页链接
Hyperlink
。
Step 1:
初始化
PagedDataSource
Step 2:
设置
PagedDataSource
属性
Step 3:
绑定
PagedDataSource
到
DataList
Step 4:
设置翻页链接
HyperLink
,使用
QueryString[“Page”]
传递当前页号
Step 5:
设置
DataList
显示数据,完成。
Source Code:
PageDataList1.aspx
********************************************************************************
PagedDataList1.aspx.cs
******************************************************************************
******************************************************************************
方法三:
按页码和页面行数获取数据源和使用翻页按钮
LinkButton
。
Step 1:
获取数据源记录数
Step 2:
设置显示页面行数
,
计算出页码
Step 3:
根据页码和当前页获取数据并绑定到
DataList
Step 4:
设置翻页按钮
LinkButton
事件
OnCommand
,使用
ViewState[“PageIndex”]
记录当前页号
Step 5:
编写
OnCommand
关联函数
IndexChanging().
Step 6:
设置
DataList
显示数据,完成。
Source Code:
PageDataList2.aspx
********************************************************************************
PagedDataList2.aspx.cs
******************************************************************************
******************************************************************************
推荐使用
1
和
3
使用
PagedDataSource
对象和翻页按钮
LinkButton
。
Step 1:
初始化
PagedDataSource
Step 2:
设置
PagedDataSource
属性
Step 3:
绑定
PagedDataSource
到
DataList
Step 4:
设置翻页按钮
LinkButton
事件
OnCommand
,使用
ViewState[“PageIndex”]
记录当前页号
Step 5:
编写
OnCommand
关联函数
IndexChanging().
Step 6:
设置
DataList
显示数据,完成。
Source Code:
PageDataList.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PagedDataList.aspx.cs" Inherits="PagedDataList" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DataList ID="DataList1" runat="server"> <HeaderTemplate> <table> <tr> <td>Employee Id</td> <td>Employee Name</td> </tr> </table> </HeaderTemplate> <ItemTemplate> <table> <tr> <td><%# DataBinder.Eval(Container.DataItem,"EMPLOYEEID").ToString().Trim() %></td> <td><%# DataBinder.Eval(Container.DataItem,"EMPLOYEENAME").ToString().Trim() %></td> </tr> </table> </ItemTemplate> </asp:DataList> <table align="right" width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td> </td> </tr> <tr> <td style="text-align: right" mce_style="text-align: right"> 第<b><asp:Label ID="lblPageIndex" runat="server" Text=""></asp:Label></b>页 共<b><asp:Label ID="lblPageCount" runat="server" Text=""></asp:Label></b>页 <asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False" CommandArgument="First" OnCommand="IndexChanging" Text="首页"></asp:LinkButton> <asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False" CommandArgument="Prev" OnCommand="IndexChanging" Text="上一页"></asp:LinkButton> <asp:LinkButton ID="btnNext" runat="server" CausesValidation="False" CommandArgument="Next" OnCommand="IndexChanging" Text="下一页"></asp:LinkButton> <asp:LinkButton ID="btnLast" runat="server" CausesValidation="False" CommandArgument="Last" OnCommand="IndexChanging" Text="尾页"></asp:LinkButton> </td> </tr> </table> </div> </form> </body> </html>
********************************************************************************
PagedDataList.aspx.cs
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class PagedDataList : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ViewState["PageIndex"] = 0; BindData(); } } private void BindData() { //获取data source DataSet oDs = GetEmployeeData(); //设置PagedDataSource PagedDataSource pds = new PagedDataSource(); pds.DataSource = oDs.Tables[0].DefaultView; pds.AllowPaging = true; pds.PageSize = 4; pds.CurrentPageIndex = int.Parse(ViewState["PageIndex"].ToString()); lblPageIndex.Text = String.Format("{0}",pds.CurrentPageIndex + 1); lblPageCount.Text = pds.PageCount.ToString(); //设置翻页按钮是否可用 if (pds.CurrentPageIndex == 0) { btnFirst.Enabled = false; btnPrev.Enabled = false; } else { btnFirst.Enabled = true; btnPrev.Enabled = true; } if (pds.CurrentPageIndex == pds.PageCount - 1) { btnLast.Enabled = false; btnNext.Enabled = false; } else { btnLast.Enabled = true; btnNext.Enabled = true; } //绑定数据 DataList1.DataSource = pds; DataList1.DataBind(); } protected void IndexChanging(object sender, EventArgs e) { string strCommand = ((LinkButton)sender).CommandArgument.ToString(); int pageindex = int.Parse(ViewState["PageIndex"].ToString()); switch(strCommand) { case "First": pageindex = 0; break; case "Prev": if (pageindex > 0) pageindex--; break; case "Next": if (pageindex < int.Parse(lblPageCount.Text) - 1) pageindex++; break; case "Last": pageindex = int.Parse(lblPageCount.Text) - 1; break; } ViewState["PageIndex"] = pageindex; BindData(); } private DataSet GetEmployeeData() { string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; conStr += Server.MapPath("~/App_Data/demo.mdb"); System.Data.OleDb.OleDbConnection dbCon = new System.Data.OleDb.OleDbConnection(conStr); dbCon.Open(); string sql; sql = "SELECT * FROM Employee"; System.Data.OleDb.OleDbDataAdapter daSrc = new System.Data.OleDb.OleDbDataAdapter(sql, dbCon); DataSet oDataSet = new DataSet(); daSrc.Fill(oDataSet); return oDataSet; } }
******************************************************************************
******************************************************************************
方法二:
使用
PagedDataSource
对象和翻页链接
Hyperlink
。
Step 1:
初始化
PagedDataSource
Step 2:
设置
PagedDataSource
属性
Step 3:
绑定
PagedDataSource
到
DataList
Step 4:
设置翻页链接
HyperLink
,使用
QueryString[“Page”]
传递当前页号
Step 5:
设置
DataList
显示数据,完成。
Source Code:
PageDataList1.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PagedDataList1.aspx.cs" Inherits="PagedDataList1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DataList ID="DataList1" runat="server"> <HeaderTemplate> <table> <tr> <td>Employee Id</td> <td>Employee Name</td> </tr> </table> </HeaderTemplate> <ItemTemplate> <table> <tr> <td><%# DataBinder.Eval(Container.DataItem,"EMPLOYEEID").ToString().Trim() %></td> <td><%# DataBinder.Eval(Container.DataItem,"EMPLOYEENAME").ToString().Trim() %></td> </tr> </table> </ItemTemplate> </asp:DataList> <table align="right" width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td> </td> </tr> <tr> <td style="text-align:right" mce_style="text-align:right"> 第<b><asp:Label ID="lblPageIndex" runat="server" Text=""></asp:Label></b>页 共<b><asp:Label ID="lblPageCount" runat="server" Text=""></asp:Label></b>页 <asp:HyperLink ID="lnkFirst" runat="server" >首页</asp:HyperLink> <asp:HyperLink ID="lnkPrev" runat="server" >上一页</asp:HyperLink> <asp:HyperLink ID="lnkNext" runat="server" >下一页</asp:HyperLink> <asp:HyperLink ID="lnkLast" runat="server" >尾页</asp:HyperLink> </td> </tr> </table> </div> </form> </body> </html>
********************************************************************************
PagedDataList1.aspx.cs
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class PagedDataList1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindData(); } } private void BindData() { //获取data source DataSet oDs = GetEmployeeData(); //设置PagedDataSource PagedDataSource pds = new PagedDataSource(); pds.DataSource = oDs.Tables[0].DefaultView; pds.AllowPaging = true; pds.PageSize = 4; //设置翻页链接 int nCurrentPage; if (Request.QueryString["Page"] != null) { nCurrentPage = Convert.ToInt32(Request.QueryString["Page"]); } else { nCurrentPage = 1; } if (nCurrentPage < 1) nCurrentPage = 1; if (nCurrentPage > pds.PageCount) nCurrentPage = pds.PageCount; pds.CurrentPageIndex = nCurrentPage - 1; lblPageCount.Text = pds.PageCount.ToString(); lblPageIndex.Text = String.Format("{0}", pds.CurrentPageIndex + 1); if (!pds.IsFirstPage) { lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToInt32(nCurrentPage - 1); lnkFirst.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=1"; } else { lnkPrev.NavigateUrl = ""; lnkFirst.NavigateUrl = ""; } if (!pds.IsLastPage) { lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToInt32(nCurrentPage + 1); lnkLast.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + pds.PageCount; } else { lnkNext.NavigateUrl = ""; lnkLast.NavigateUrl = ""; } //绑定数据 DataList1.DataSource = pds; DataList1.DataBind(); } private DataSet GetEmployeeData() { string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; conStr += Server.MapPath("~/App_Data/demo.mdb"); System.Data.OleDb.OleDbConnection dbCon = new System.Data.OleDb.OleDbConnection(conStr); dbCon.Open(); string sql; sql = "SELECT * FROM Employee"; System.Data.OleDb.OleDbDataAdapter daSrc = new System.Data.OleDb.OleDbDataAdapter(sql, dbCon); DataSet oDataSet = new DataSet(); daSrc.Fill(oDataSet); return oDataSet; } }
******************************************************************************
******************************************************************************
方法三:
按页码和页面行数获取数据源和使用翻页按钮
LinkButton
。
Step 1:
获取数据源记录数
Step 2:
设置显示页面行数
,
计算出页码
Step 3:
根据页码和当前页获取数据并绑定到
DataList
Step 4:
设置翻页按钮
LinkButton
事件
OnCommand
,使用
ViewState[“PageIndex”]
记录当前页号
Step 5:
编写
OnCommand
关联函数
IndexChanging().
Step 6:
设置
DataList
显示数据,完成。
Source Code:
PageDataList2.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PagedDataList2.aspx.cs" Inherits="PagedDataList2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DataList ID="DataList1" runat="server"> <HeaderTemplate> <table> <tr> <td>Employee Id</td> <td>Employee Name</td> </tr> </table> </HeaderTemplate> <ItemTemplate> <table> <tr> <td><%# DataBinder.Eval(Container.DataItem,"EMPLOYEEID").ToString().Trim() %></td> <td><%# DataBinder.Eval(Container.DataItem,"EMPLOYEENAME").ToString().Trim() %></td> </tr> </table> </ItemTemplate> </asp:DataList> <table align="right" width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td> </td> </tr> <tr> <td style="text-align:right" mce_style="text-align:right"> 第<b><asp:Label ID="lblPageIndex" runat="server" Text=""></asp:Label></b>页 共<b><asp:Label ID="lblPageCount" runat="server" Text=""></asp:Label></b>页 <asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False" CommandArgument="First" OnCommand="IndexChanging" Text="首页"></asp:LinkButton> <asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False" CommandArgument="Prev" OnCommand="IndexChanging" Text="上一页"></asp:LinkButton> <asp:LinkButton ID="btnNext" runat="server" CausesValidation="False" CommandArgument="Next" OnCommand="IndexChanging" Text="下一页"></asp:LinkButton> <asp:LinkButton ID="btnLast" runat="server" CausesValidation="False" CommandArgument="Last" OnCommand="IndexChanging" Text="尾页"></asp:LinkButton> </td> </tr> </table> </div> </form> </body> </html>
********************************************************************************
PagedDataList2.aspx.cs
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.OleDb; public partial class PagedDataList2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ViewState["PageIndex"] = 0; BindData(); } } private void BindData() { //设置页面行数 int PageSize = 4; //计算总共有多少记录 int RecordCount = CalculateRecord(); //计算总共有多少页 int PageCount; if (RecordCount % PageSize != 0) { PageCount = RecordCount / PageSize + 1; } else { PageCount = RecordCount / PageSize; } lblPageCount.Text = PageCount.ToString(); //获取当前页码 int CurrentPage = int.Parse(ViewState["PageIndex"].ToString()); //根据当前页码获取数据并绑定 DataList1.DataSource = CreateSource(CurrentPage, PageSize); DataList1.DataBind(); //设置翻页按钮 btnNext.Enabled = true; btnPrev.Enabled = true; if (CurrentPage == (PageCount - 1)) { btnNext.Enabled = false; btnLast.Enabled = false; } else { btnNext.Enabled = true; btnLast.Enabled = true; } if (CurrentPage == 0) { btnPrev.Enabled = false; btnFirst.Enabled = false; } else { btnPrev.Enabled = true; btnFirst.Enabled = true; } lblPageIndex.Text = (CurrentPage + 1).ToString(); } protected void IndexChanging(object sender, EventArgs e) { string strCommand = ((LinkButton)sender).CommandArgument.ToString(); int pageindex = int.Parse(ViewState["PageIndex"].ToString()); switch (strCommand) { case "First": pageindex = 0; break; case "Prev": if(pageindex > 0) pageindex--; break; case "Next": if(pageindex < int.Parse(lblPageCount.Text) - 1) pageindex++; break; case "Last": pageindex = int.Parse(lblPageCount.Text) - 1; break; } ViewState["PageIndex"] = pageindex; BindData(); } private DataSet GetEmployeeData() { string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; conStr += Server.MapPath("~/App_Data/demo.mdb"); System.Data.OleDb.OleDbConnection dbCon = new System.Data.OleDb.OleDbConnection(conStr); dbCon.Open(); string sql; sql = "SELECT * FROM Employee"; System.Data.OleDb.OleDbDataAdapter daSrc = new System.Data.OleDb.OleDbDataAdapter(sql, dbCon); DataSet oDataSet = new DataSet(); daSrc.Fill(oDataSet); return oDataSet; } //计算总共有多少条记录 public int CalculateRecord() { string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; conStr += Server.MapPath("~/App_Data/demo.mdb"); System.Data.OleDb.OleDbConnection dbCon = new System.Data.OleDb.OleDbConnection(conStr); dbCon.Open(); string sql; int intCount = 0; sql = "SELECT COUNT(*) AS CNT FROM Employee"; OleDbCommand MyComm = new OleDbCommand(sql,dbCon); OleDbDataReader dr = MyComm.ExecuteReader(); if (dr.Read()) { intCount = Int32.Parse(dr["CNT"].ToString()); } else { intCount = 0; } dr.Close(); return intCount; } //根据页码和页面大小获取数据 ICollection CreateSource(int nPageIndex, int nPageSize) { int StartIndex; int PageSize; //设定导入的起终地址 StartIndex = nPageIndex * nPageSize; PageSize = nPageSize; DataSet ds = new DataSet(); string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; conStr += Server.MapPath("~/App_Data/demo.mdb"); System.Data.OleDb.OleDbConnection dbCon = new System.Data.OleDb.OleDbConnection(conStr); dbCon.Open(); string sql; sql = "SELECT * FROM Employee"; OleDbDataAdapter MyAdapter = new OleDbDataAdapter(sql, dbCon); MyAdapter.Fill(ds, StartIndex, PageSize, "Employee"); return ds.Tables["Employee"].DefaultView; } }
******************************************************************************
******************************************************************************
推荐使用
1
和
3
相关文章推荐
- Scott Mitchell 的ASP.NET 2.0数据教程之四十四::DataList和Repeater数据分页
- 用DataList控件和ObjectDataSource在ASP.NET 2.0中实现高效能数据分页
- 在ASP.NET 2.0中操作数据之四十一:DataList和Repeater数据分页
- Scott Mitchell 的ASP.NET 2.0数据教程之四十四::DataList和Repeater数据分页
- Scott Mitchell 的ASP.NET 2.0数据教程之四十四::DataList和Repeater数据分页
- ASP.NET 2.0 — DataList分页 (转)
- 用DataList控件和ObjectDataSource在ASP.NET 2.0中实现高效能数据分页
- Scott Mitchell 的ASP.NET 2.0数据教程之四十四::DataList和Repeater数据分页
- Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序(一)
- Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序(三)
- ASP.NET 2.0在SQL Server 2005上自定义分页
- ASP.net 2.0 自定义控件的开发之数据分页 第五章
- asp.net datalist 分页显示代码
- asp.net中Datalist使用数字分页的实现方法
- ASP.NET中用DataList作分页的核心程序
- [收藏]asp.net 2.0 ajax无刷新分页代码
- ASP.net 2.0 自定义控件的开发之数据分页 第四章
- 在ASP.NET 2.0中操作数据之二十六:排序自定义分页数据
- 在ASP.NET 2.0中操作数据之三十三:基于DataList和Repeater使用DropDownList过滤的主/从报表
- 在ASP.NET 2.0中操作数据之三十:格式化DataList和Repeater的数据