请大哥们帮忙解释一下分页的页码怎么保存,页总数怎么求出? 我想做自定义分页,但不知道页总数怎么求出,页码怎么保存,上一页,下一页怎么传值绑定?最好能给一个完整的例子。谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我看你直接下个分页控件就什么都懂了上一页,下一页根据 LABLE 中的值来得出如果显示的是第2页("2"在lable中)那上一页就是从LABLE中取出2来取出这个页码再绑定就//从数据库中取出photo的值并绑定在页面上 protected void bindPhoto() {int pageIndex = Convert.ToInt32(this.lblPageIndex.Text.ToString()); PagedDataSource pds = new PagedDataSource(); pds.DataSource = SqlHelper.executeDataAdapter("select_photo", CommandType.StoredProcedure, null).Tables[0].DefaultView; pds.AllowPaging = true; pds.PageSize = 3; pds.CurrentPageIndex = pageIndex - 1;//这一句是关键,CurrentPageIndex当前页为LABLE中的值减1,CurrentPageIndex是从0开始的,所以要减1,根据这一句来决定取出CurrentPageIndex中哪一页的值 this.lbtnFirst.Visible = true; this.lbtnLast.Visible = true; this.lbtnNext.Visible = true; this.lbtnFinal.Visible = true; if (pageIndex == 1) { this.lbtnLast.Visible = false; } if (pageIndex == pds.PageCount) { this.lbtnNext.Visible = false; } this.dlPhoto.DataSource = pds; this.dlPhoto.DataKeyField = "id"; this.dlPhoto.DataBind();} //单击上一页的时候改变lable中的值 protected void lbtnLast_Click(object sender, EventArgs e) { this.lblPageIndex.Text = Convert.ToString(Convert.ToInt32(this.lblPageIndex.Text) - 1); bindPhoto(); } //单击下一页的时候改变lable中的值 protected void lbtnNext_Click(object sender, EventArgs e) { this.lblPageIndex.Text = Convert.ToString(Convert.ToInt32(this.lblPageIndex.Text) + 1); bindPhoto(); } http://www.webdiyer.com/AspNetPager/default.aspx pageIndex == pds.PageCount//这一句含义:如果lable中的值也就是pageIndex等于pds.PageCount(显示的总页数)PageCount没有从0开始这一说,他的值是所有的页数 if(记录总数%每页记录数 != 0){ 页总数 = 记录总数/每页记录数 +1;}else 页总数 = 记录总数/每页记录数;页码一般保存在url中,如:a.asp?page=5上下页也是这样:<a href="a.asp?page=5">下一页</a><a href="a.asp?page=4">上一页</a>这些方法在asp中最常用到,asp.net中同样适用。asp.net中的分页方式更为多样,这里就不列举了。上面的算是 抛砖引玉 吧,楼主可以去搜索 "asp.net分页"有很多的详细讲解! CSDN的回复刷新速度应该提高了!! 我的URL分页using System;using System.Text;namespace CpushIMS{ public class PageList { //fileName 文件名 不带后缀 public string FileName { get; set; } //文件名后缀 public string FileExt { get; set; } //分页文件名格式 不包含文件名 string PageLink; //分页连接html格式 public string LinkHtml { get; set; } //首页 上一页 下一页 尾页 文字 public string IndexText { get; set; } public string PrevText { get; set; } public string NextText { get; set; } public string EndText { get; set; } //页码显示数量 public int ListSize { get; set; } //当前页索引值 public int PageIndex { get; set; } public int PageSize { get; set; } public int PageCount { get; set; } public int RecordCount { get; set; } public bool isShowPageList{get;set;} public PageList() { FileExt = ".aspx"; ListSize = 10; IndexText = "首页"; PrevText = "上一页"; NextText = "下一页"; EndText = "尾页"; LinkHtml = "{0}\n"; PageSize = 20; PageIndex = 1; isShowPageList=true; } public string GetHtml() { PageCount = RecordCount / PageSize; if (RecordCount % PageSize > 0) PageCount++; if (PageIndex > PageCount) PageIndex = PageCount; PageLink = FileName + "_{page}" + FileExt; StringBuilder html = new StringBuilder(); if (PageCount <= 1) return ""; //第一页的时候不显示首页和上一页 if (PageIndex > 1) { html.Append(string.Format(LinkHtml, "<a href=\"" + FileName + FileExt + "\">" + IndexText + "</a>")); if (PageIndex - 1 > 1) html.Append(string.Format(LinkHtml, "<a href=\"" + PageLink.Replace("{page}", (PageIndex - 1).ToString()) + "\">" + PrevText + "</a>")); } //显示1 2 3 4 5 6 这些页码列表 if (isShowPageList) { int LoopSize;//循环上限 string PageText;//连接名称 //listindex 当前页码列表的索引 int ListIndex = 0; if (PageIndex % ListSize > 0) ListIndex = PageIndex / ListSize; else ListIndex = PageIndex / ListSize - 1; if (ListSize > PageCount) //总页数不到一个页码数 LoopSize = PageCount; else LoopSize = ListSize; //最后一页的循环上限 if ((ListIndex + 1) * ListSize >= PageCount && PageCount % ListSize > 0) LoopSize = PageCount % ListSize; for (int i = 1; i <= LoopSize; ++i) { PageText = (i + ListIndex * ListSize).ToString(); //是否为当前页 if (ListIndex * ListSize + i != PageIndex) html.Append(string.Format(LinkHtml, "<a href=\"" + PageLink.Replace("{page}", PageText) + "\">" + PageText + "</a>")); else html.Append(string.Format(LinkHtml, "<a class=\"curPage\">" + PageText + "</a>")); } if (LoopSize == ListSize && PageCount > ListSize) { html.Append(string.Format(LinkHtml, "<a href=\"" + PageLink.Replace("{page}", ((ListIndex + 1) * ListSize + 1).ToString()) + "\">...</a>")); } } //最后一页不显示下一页和尾页 if (PageIndex < PageCount) { if (PageIndex + 1 < PageCount) html.Append(string.Format(LinkHtml, "<a href=\"" + PageLink.Replace("{page}", (PageIndex + 1).ToString()) + "\">" + NextText + "</a>")); html.Append(string.Format(LinkHtml, "<a href=\"" + PageLink.Replace("{page}", PageCount.ToString()) + "\">" + EndText + "</a>")); } return html.ToString(); } }} “/”应用程序中的服务器错误 asp.net网页写的采集程序 关于 点击 层里面的checkboxlist 触发 SelectedIndexChanged 事件,层消失了的问题 等阿泰哥帮忙解决水晶问题 怎样用自己家里的电脑建立网站,且外网可以访问 在线等~表字段的类型问题 如何显示在线多长时间//时间格式是 (分:秒) 注:其中秒是不停的走的 用C# or JavaScript 都可以 关于OracleClient的问题 asp错误 web页面动态显示图片 在ASP.NET中如何使用CACHE? 我适合读<<Java Script高级程序设计>>这本书吗
如果显示的是第2页("2"在lable中)
那上一页就是从LABLE中取出2来
取出这个页码再绑定就//从数据库中取出photo的值并绑定在页面上
protected void bindPhoto()
{
int pageIndex = Convert.ToInt32(this.lblPageIndex.Text.ToString());
PagedDataSource pds = new PagedDataSource();
pds.DataSource = SqlHelper.executeDataAdapter("select_photo", CommandType.StoredProcedure, null).Tables[0].DefaultView;
pds.AllowPaging = true;
pds.PageSize = 3;
pds.CurrentPageIndex = pageIndex - 1;//这一句是关键,CurrentPageIndex当前页为LABLE中的值减1,CurrentPageIndex是从0开始的,所以要减1,根据这一句来决定取出CurrentPageIndex中哪一页的值 this.lbtnFirst.Visible = true;
this.lbtnLast.Visible = true;
this.lbtnNext.Visible = true;
this.lbtnFinal.Visible = true; if (pageIndex == 1)
{
this.lbtnLast.Visible = false;
}
if (pageIndex == pds.PageCount)
{
this.lbtnNext.Visible = false;
} this.dlPhoto.DataSource = pds;
this.dlPhoto.DataKeyField = "id";
this.dlPhoto.DataBind();}
//单击上一页的时候改变lable中的值
protected void lbtnLast_Click(object sender, EventArgs e)
{
this.lblPageIndex.Text = Convert.ToString(Convert.ToInt32(this.lblPageIndex.Text) - 1);
bindPhoto();
} //单击下一页的时候改变lable中的值
protected void lbtnNext_Click(object sender, EventArgs e)
{
this.lblPageIndex.Text = Convert.ToString(Convert.ToInt32(this.lblPageIndex.Text) + 1);
bindPhoto();
}
pageIndex == pds.PageCount//这一句含义:如果lable中的值也就是pageIndex等于pds.PageCount(显示的总页数)PageCount没有从0开始这一说,他的值是所有的页数
{
页总数 = 记录总数/每页记录数 +1;
}
else
页总数 = 记录总数/每页记录数;
页码一般保存在url中,如:a.asp?page=5
上下页也是这样:<a href="a.asp?page=5">下一页</a>
<a href="a.asp?page=4">上一页</a>
这些方法在asp中最常用到,asp.net中同样适用。
asp.net中的分页方式更为多样,这里就不列举了。
上面的算是 抛砖引玉 吧,楼主可以去搜索 "asp.net分页"有很多的详细讲解!
using System;
using System.Text;namespace CpushIMS
{
public class PageList
{
//fileName 文件名 不带后缀
public string FileName { get; set; }
//文件名后缀
public string FileExt { get; set; }
//分页文件名格式 不包含文件名
string PageLink;
//分页连接html格式
public string LinkHtml { get; set; } //首页 上一页 下一页 尾页 文字
public string IndexText { get; set; }
public string PrevText { get; set; }
public string NextText { get; set; }
public string EndText { get; set; } //页码显示数量
public int ListSize { get; set; }
//当前页索引值
public int PageIndex { get; set; }
public int PageSize { get; set; }
public int PageCount { get; set; }
public int RecordCount { get; set; } public bool isShowPageList{get;set;}
public PageList()
{
FileExt = ".aspx";
ListSize = 10;
IndexText = "首页";
PrevText = "上一页";
NextText = "下一页";
EndText = "尾页"; LinkHtml = "{0}\n";
PageSize = 20;
PageIndex = 1;
isShowPageList=true;
} public string GetHtml()
{ PageCount = RecordCount / PageSize;
if (RecordCount % PageSize > 0)
PageCount++;
if (PageIndex > PageCount)
PageIndex = PageCount;
PageLink = FileName + "_{page}" + FileExt; StringBuilder html = new StringBuilder();
if (PageCount <= 1)
return "";
//第一页的时候不显示首页和上一页
if (PageIndex > 1)
{
html.Append(string.Format(LinkHtml, "<a href=\"" + FileName + FileExt + "\">" + IndexText + "</a>"));
if (PageIndex - 1 > 1)
html.Append(string.Format(LinkHtml, "<a href=\"" + PageLink.Replace("{page}", (PageIndex - 1).ToString()) + "\">" + PrevText + "</a>"));
}
//显示1 2 3 4 5 6 这些页码列表
if (isShowPageList)
{
int LoopSize;//循环上限
string PageText;//连接名称 //listindex 当前页码列表的索引
int ListIndex = 0;
if (PageIndex % ListSize > 0)
ListIndex = PageIndex / ListSize;
else
ListIndex = PageIndex / ListSize - 1; if (ListSize > PageCount) //总页数不到一个页码数
LoopSize = PageCount;
else
LoopSize = ListSize;
//最后一页的循环上限
if ((ListIndex + 1) * ListSize >= PageCount && PageCount % ListSize > 0)
LoopSize = PageCount % ListSize; for (int i = 1; i <= LoopSize; ++i)
{ PageText = (i + ListIndex * ListSize).ToString(); //是否为当前页
if (ListIndex * ListSize + i != PageIndex)
html.Append(string.Format(LinkHtml, "<a href=\"" + PageLink.Replace("{page}", PageText) + "\">" + PageText + "</a>"));
else
html.Append(string.Format(LinkHtml, "<a class=\"curPage\">" + PageText + "</a>"));
} if (LoopSize == ListSize && PageCount > ListSize)
{
html.Append(string.Format(LinkHtml, "<a href=\"" + PageLink.Replace("{page}", ((ListIndex + 1) * ListSize + 1).ToString()) + "\">...</a>"));
}
} //最后一页不显示下一页和尾页
if (PageIndex < PageCount)
{
if (PageIndex + 1 < PageCount)
html.Append(string.Format(LinkHtml, "<a href=\"" + PageLink.Replace("{page}", (PageIndex + 1).ToString()) + "\">" + NextText + "</a>"));
html.Append(string.Format(LinkHtml, "<a href=\"" + PageLink.Replace("{page}", PageCount.ToString()) + "\">" + EndText + "</a>"));
} return html.ToString();
}
}
}