asp.NET分页如何实现?

如何实现ASP.NET分页?... 如何实现ASP.NET分页? 展开
 我来答
啦哈嘿呦c7
2016-01-04 · TA获得超过4688个赞
知道大有可为答主
回答量:2398
采纳率:70%
帮助的人:460万
展开全部
  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
515133498
2012-06-14 · TA获得超过121个赞
知道小有建树答主
回答量:436
采纳率:0%
帮助的人:95.6万
展开全部
你说的是什么控件分页呢
1)GrdiView中PageIndexChanging属性就是分页
2)Repeater中分页要自己写的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
20091542
2012-06-14 · TA获得超过181个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:118万
展开全部
下面是我自己写的一个分页源码,不是很实用,但是原理都差不多,参考下吧。
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;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
芮祥CY
2012-06-14 · TA获得超过304个赞
知道小有建树答主
回答量:586
采纳率:0%
帮助的人:223万
展开全部
是gridview分页吗,如果是的话,属性里有个好像叫allowpaging
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张三Love李四
2012-06-14 · 超过15用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:22.9万
展开全部
用Linq,linq的两个方法就搞定,一个是当前所在页的索引,一个是每页显示的数据量!超简单!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式