asp.NET分页如何实现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.NET分页如何实现?相关的知识,希望对你有一定的参考价值。

如何实现ASP.NET分页?

  Asp.Net分页控件实现分页功方法/步骤

  1、首先来了解Asp.Net分页控件——AspNetPager以及控件的属性。

  CurrentPageIndex//当前页数(页码)

  RecordCount //总数据条数

  PageSize //每页数据条数

  PageCount //总的页数

  当然还有一些特别“人性化”的属性可以设置。

  2、接下来就是给控件属性赋值就可以了,通过Sql语句查询到数据库中的数据,

  SqlDataAdapter ada=new SqlDataAdapter(new SqlCommand(Sql语句,连接数据库对象);

  DataSet ds=new DataSet();

  ads.Fill(总数据,开始,结束位置);

  此时DataSet——ds就是获得目标页的数据,也仅仅是获得需要的数据。

  3、最后需要将查询到的数据显示到前台页面,通过绑定数据源控件,常用的Repeater控件就可以循环显示数据。

  repeater.DataSource=数据;

  repeater.DataBind();

  Repeater控件还有很多实用功能,越学越深,越研越深。

  4、Asp.Net分页控件还可以设置分页的首页、上一页、下一页、尾页在前台显示的链接文本。这里只是提及简单功能,深入研究剖析其原理就更得心应手了。

资料来源:http://news.netshop168.com/cgal/0104249912.html
参考技术A 你说的是什么控件分页呢
1)GrdiView中PageIndexChanging属性就是分页
2)Repeater中分页要自己写的
参考技术B 下面是我自己写的一个分页源码,不是很实用,但是原理都差不多,参考下吧。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//引入命名空间
using System.Text;
using System.Data;

/// <summary>
///CommondMethod 包含了一些通用的方法
/// </summary>
public class CommondMethod

public CommondMethod()




/// <summary>
/// 分页
/// </summary>
/// <param name="ds">绑定后的数据源</param>
/// <param name="currentPage">当前显示的页</param>
/// <param name="displayLinkCount">设置显示超级链接的数目,默认情况是为10,最大为20</param>
/// <param name="recordsOfEveryPage">设置显示每页显示的记录数,默认情况下显示10条记录,最大显示20条记录</param>
/// <param name="recordsOfEveryPage">设置要跳转的页面,即本页面</param>
/// <returns>将分页信息以字符串的形式返回</returns>
public string SeparatePage(DataSet ds, int currentPage, int displayLinkCount, int recordsOfEveryPage, string swapPage)

#region 定义变量
/// <summary>
/// 总的记录数
/// </summary>
int totalRecords = 0;
/// <summary>
/// 总的页数
/// </summary>
int totalPages = 0;
/// <summary>
/// 每页显示的记录数
/// </summary>
//int recordsOfEveryPage = 3;
/// <summary>
/// 当前页的第一条记录
/// </summary>
int firstRecordOfCurrentPage = 0;
/// <summary>
/// 显示当前的记录数
/// </summary>
int displayCurrentRecords = 0;
/// <summary>
/// 记录当前超级链接的第一个
/// </summary>
int currentFirstLink = 1;
/// <summary>
/// 记录当前的超级链接总数,即可显示的最大超级链接数
/// </summary>
int currentLinkCount = 0;
///<summary>
/// 最后将信息以字符串的形式返回
/// </summary>
StringBuilder sb = new StringBuilder();
#endregion

#region 计算所需变量
//获得所有的记录数
totalRecords = ds.Tables[0].Rows.Count;

//计算共有多少页
if (totalRecords % recordsOfEveryPage == 0)

totalPages = totalRecords / recordsOfEveryPage;

else

totalPages = totalRecords / recordsOfEveryPage + 1;


//计算用来显示超级链接的数量
if (displayLinkCount <= 0 && displayLinkCount > 20)

displayLinkCount = 10;


//计算每页显示的记录数
if (recordsOfEveryPage <= 0 && recordsOfEveryPage > 20)

recordsOfEveryPage = 10;


//获取传递过来的currentPage
if (currentPage <= 0)

currentPage = 1;

else if (currentPage >= totalPages)

currentPage = totalPages;


//计算当前页的第一条记录,这里不用考虑加1的情况是因为本身数据中的记录就是从0开始的
firstRecordOfCurrentPage = (currentPage - 1) * recordsOfEveryPage;
#endregion

#region 制作表头
sb.Append(@"<table border=1><tr>");
for (int i = 0; i < ds.Tables[0].Columns.Count; i++)

sb.Append(string.Format(@"<td>0</td>", ds.Tables[0].Columns[i].ColumnName));

sb.Append("</tr>");
#endregion

#region 计算当前要显示的记录数
if (currentPage == totalPages)

displayCurrentRecords = totalRecords;

else

displayCurrentRecords = firstRecordOfCurrentPage + recordsOfEveryPage;

for (int i = firstRecordOfCurrentPage; i < displayCurrentRecords; i++)

sb.Append("<tr>");
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)

if (ds.Tables[0].Rows[i][j] == DBNull.Value)

sb.Append(string.Format(@"<td>0</td>", "null"));

else

sb.Append(string.Format(@"<td>0</td>", ds.Tables[0].Rows[i][j]));


sb.Append("</tr>");

sb.Append("</table>");
#endregion

#region 用来显示超级链接
/*
*这里当点击上一页时,用传递一个参数,即把当前页currentPage传过去,当点击下一页时也应该将当前页currentPage传递过去。
*当点击具体的某页时应该将具体的页码传递过去。
*/
sb.Append("共有" + totalPages + "页  ");

//判断怎么样显示上一页
if (currentPage == 1)

sb.Append("上一页");

else

sb.Append("<a href='" + swapPage + "?currentPage=" + (currentPage - 1).ToString() + "'>上一页</a>");

//计算显示超级链接的第一个值
if (currentPage % displayLinkCount == 0)

currentFirstLink = (currentPage / displayLinkCount - 1) * displayLinkCount + 1;

else

currentFirstLink = (currentPage / displayLinkCount) * displayLinkCount + 1;

//如果当前可显示的最大超级链接数大于总页数,那么当前可显示最大超级链接数应该等于总页数
currentLinkCount = currentFirstLink + displayLinkCount - 1;
if (currentLinkCount > totalPages)

currentLinkCount = totalPages;

//当显示的最大超级链接数超过可显示的超级链接数量时应该将超级链接数量向前移动
if (((currentLinkCount - currentFirstLink) + 1) < displayLinkCount)

currentFirstLink = currentLinkCount - displayLinkCount + 1;


for (int i = currentFirstLink; i <= currentLinkCount; i++)

sb.Append("  <a href='" + swapPage + "?currentPage=" + i.ToString() + "'>" + i + "</a>");


//判断怎么样显示下一页
if (currentPage == totalPages)

sb.Append("  下一页");

else

sb.Append("  <a href='" + swapPage + "?currentPage=" + (currentPage + 1).ToString() + "'>下一页</a>");

#endregion

return sb.ToString();


调用分页方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//引入命名空间
using System.Data;
using System.Data.SqlClient;

public partial class 调用方法实现分页技术 : System.Web.UI.Page

protected void Page_Load(object sender, EventArgs e)

DataSet ds;

if (Session["ds"] == null)

//调用方法实现分页
SqlConnection con = new SqlConnection();
con.ConnectionString = "data source=.;integrated security=true;database=Northwind";
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "select * from Orders";
SqlDataAdapter sda = new SqlDataAdapter(cmd);
ds = new DataSet();
sda.Fill(ds);
Session["ds"] = ds;
con.Close();

else

ds = (DataSet)Session["ds"];


int currentPage;
if (Request.QueryString["currentPage"] == null)

currentPage = 1;
Session["currentPage"] = currentPage;

else

currentPage = Convert.ToInt32(Request.QueryString["currentPage"]);


CommondMethod com = new CommondMethod();
string str = com.SeparatePage(ds, currentPage, 15, 5, "调用方法实现分页技术.aspx");
this.Container.InnerHtml = str;

参考技术C 是gridview分页吗,如果是的话,属性里有个好像叫allowpaging 参考技术D 用Linq,linq的两个方法就搞定,一个是当前所在页的索引,一个是每页显示的数据量!超简单!

前台用layui框架实现表格分页,后台用asp.net的问题

我想实现分页,但是只能实现下面的页码分页,但是所有内容还是在一页,也就是数据没办法分到第二页,求大神指教下,帮个忙,应该是后台问题,但是不知道怎么改,代码有点乱就不贴出来了,希望给个简单的方法

参考技术A layui的分页会把limit和page(也就是每页条数和当前页,大概是这个名字,具体看layui的数据表格说明)传到后台,你需要在后台接收这两个参数然后展示相应的内容。你可以在运行网页的时候,在网页里按
f12
,在
网络监控
中点下第2页,看看是否正确的向后台发送了请求,如果传参正确那就是后台的问题,这个没啥简单办法一说,要看你后台分页代码了。
参考技术B Asp.net 实现分页不仅是前台显示问题,需要后台分页的连接代码。

以上是关于asp.NET分页如何实现?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net如何实现多表查询然后对其进行分页

如何以编程方式在 ASP.NET 4.0 GridView 上启用分页和排序?

ASP.NET 中如何用C#语言代码实现分页功能

在 Razor 视图中使用 Ajax 进行 Asp.Net Core 表分页

ASP.NET使用ajax实现分页局部刷新页面

ASP.Net MVC4排序检索分页的实现