大家做.NET开发时候用什么方法进行分页的啊? 我所接触的分页方法是.net的控件分页,用ListView+DataPager或者GridView自带的分页,还有就是存储过程分页,各有优劣控件比较省事,但是灵活性不强,存储过程分页的话,可以展现各中形式,不过代码量不少。或者还有其他的分页方法我想问下,眼下最主流,最时髦,最常用的分页方法是什么呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 分页存储过程使用比较多,还有自定义分页控件如aspnetpager.简单些使用控件的自定义分页如gridview,reapter.还有datapager. 数据量非常大的情况下 使用存储过程分页,或使用gridview自带的分页也成 不过数据量大的时候就比较慢 用存储过程,aspnetpager,相当方便 请参考这篇非常好的文章http://www.codeproject.com/KB/custom-controls/ASPNETPagerControl.aspx,并可下载Sample Code。 如果简单的情况,如数据量不大的,且数据增加的速度小的,一般就用gridview自带的,省事如果数据量大,则用存储过程分页 本人认为最好还是用存储过程实现,然后自定义一个用户分页控件。使用时直接引用即可。本人最近写了一个一个,代码如下,希望有所帮助。控件表现代码:<%@ Control Language="C#" AutoEventWireup="true" CodeFile="AspPage.ascx.cs" Inherits="AspPage" %><asp:Button ID="btnFirst" runat="server" Text="第一页" cssclass="ButtonCss" OnClick="btnFirst_Click" /><asp:Button ID="btnBack" runat="server" Text="上一页" cssclass="ButtonCss" OnClick="btnBack_Click" /><asp:Button ID="btnNext" runat="server" Text="下一页" cssclass="ButtonCss" OnClick="btnNext_Click" /><asp:Button ID="btnLast" runat="server" Text="最后一页" cssclass="ButtonCss" OnClick="btnLast_Click" /><asp:Label ID="lblMessage" runat="server" Text="Label"></asp:Label><asp:TextBox ID="txtPage" runat="server" Width="25px"></asp:TextBox><asp:Button ID="btnGo" runat="server" Text="GO" OnClick="btnGo_Click" />实现代码: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 delegate void PageIndexChageDelegete();//定义委托public partial class AspPage : System.Web.UI.UserControl{ //有多少条数据。 public int Count { set { ViewState["count"] = value; getPageTotal(); setButtonEnabled(); } get { if (ViewState["count"] != null) { return Convert.ToInt32(ViewState["count"]); } else { return 0; } } } public int PageSize { set { ViewState["pageSize"] = value; } get { return Convert.ToInt32(ViewState["pageSize"]); } } //总页数。 public int PageCount { set { ViewState["pageCount"] = value; } get { if (ViewState["pageCount"] != null) { return Convert.ToInt32(ViewState["pageCount"]); } else { return 0; } } } public int CurrentPage { set { ViewState["currentPage"] = value; } get { if (ViewState["currentPage"] != null) { return Convert.ToInt32(ViewState["currentPage"]); } else { return 0; } } } public event PageIndexChageDelegete pageIndexChanged;//定义事件 protected void Page_Load(object sender, EventArgs e) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("<script type='text/javascript' language='javascript'>"); sb.Append(" function DataCheck() "); sb.Append("{"); sb.Append(" var num = document.getElementById('").Append(this.txtPage.ClientID).Append("').value;"); sb.Append(" if(num =='') "); sb.Append(" { "); sb.Append(" alert('请至少输入一个数字!'); "); sb.Append(" return false; "); sb.Append(" } "); sb.Append(" var pattern=/\\d+/ ;"); sb.Append(" var flag=pattern.test(num); "); sb.Append(" if(!flag) "); sb.Append(" { "); sb.Append(" alert('请确认输入的是数字!'); "); sb.Append(" return false; "); sb.Append(" } "); sb.Append(" else "); sb.Append(" { "); sb.Append(" if(num>=1 && num<=").Append(PageCount).Append(")"); sb.Append(" { "); sb.Append(" return true; "); sb.Append(" } "); sb.Append(" else "); sb.Append("{"); sb.Append(" alert('请输入合适的页号!') ;"); sb.Append(" return false; "); sb.Append(" } "); sb.Append(" } "); sb.Append(" } "); sb.Append("</script>"); Page.RegisterStartupScript("ok", sb.ToString()); this.btnGo.Attributes.Add("onclick", "return DataCheck();"); if (!IsPostBack) { getPageTotal(); setButtonEnabled(); this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount); } } //得到总页数的方法。 public void getPageTotal() { if (Count % PageSize == 0) { PageCount = Count / PageSize; } else { PageCount = (Count / PageSize) + 1; } this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount); } // 设置按钮的可用性 private void setButtonEnabled() { if (PageCount == 1 || PageCount==0) { this.btnFirst.Enabled = false; this.btnBack.Enabled = false; this.btnLast.Enabled = false; this.btnNext.Enabled = false; } else if (CurrentPage == PageCount) { this.btnNext.Enabled = false; this.btnLast.Enabled = false; this.btnFirst.Enabled = true; this.btnBack.Enabled = true; } else if (CurrentPage == 1) { this.btnBack.Enabled = false; this.btnFirst.Enabled = false; this.btnLast.Enabled = true; this.btnNext.Enabled = true; } else { this.btnNext.Enabled = true; this.btnLast.Enabled = true; this.btnFirst.Enabled = true; this.btnBack.Enabled = true; } } //点击第一页返回第一页 protected void btnFirst_Click(object sender, EventArgs e) { CurrentPage = 1; if (pageIndexChanged != null) { pageIndexChanged(); } setButtonEnabled(); this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount); } //上一页的实现代码 protected void btnBack_Click(object sender, EventArgs e) { CurrentPage--; if (pageIndexChanged != null) { pageIndexChanged(); } setButtonEnabled(); this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount); } //下一页的实现代码 protected void btnNext_Click(object sender, EventArgs e) { CurrentPage++; if (pageIndexChanged != null) { pageIndexChanged(); } setButtonEnabled(); this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount); } //最后一页的实现代码 protected void btnLast_Click(object sender, EventArgs e) { CurrentPage = PageCount; if (pageIndexChanged != null) { pageIndexChanged(); } setButtonEnabled(); this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount); } //任意页的跳转 protected void btnGo_Click(object sender, EventArgs e) { CurrentPage = Convert.ToInt32(this.txtPage.Text); if (pageIndexChanged != null) { pageIndexChanged(); } setButtonEnabled(); this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount); }} asp.net利用存储过程分页代码 C#高效分页代码 存储过程和Aspnetpager可以参考:http://blog.csdn.net/snoopy83101/archive/2009/09/09/4536582.aspx //首页 protected void LinkButton1_Click(object sender, EventArgs e) { this.GridView1.PageIndex = 0; DataBind(); } //上一页 protected void LinkButton2_Click(object sender, EventArgs e) { if (this.GridView1.PageIndex > 0) { this.GridView1.PageIndex = this.GridView1.PageIndex - 1; DataBind(); } } //下一页 protected void LinkButton3_Click(object sender, EventArgs e) { if (this.GridView1.PageIndex < this.GridView1.PageCount) { this.GridView1.PageIndex = this.GridView1.PageIndex + 1; DataBind(); } } //尾页 protected void LinkButton4_Click(object sender, EventArgs e) { this.GridView1.PageIndex = this.GridView1.PageCount; DataBind(); } 当前第XX页:在GridView的RowDataBound中 Label1.Text = string.Format("当前第{0}页/总共{1}页", this.GridView1.PageIndex + 1, this.GridView1.PageCount); 存储过程+aspnetpager非常方便,什么都可以自定义,显示的列,表名,条件等等不变以后就这了 VSS 安装问题 水晶报表 连续打印 请问:datalist可以嵌套表格吗? C#.NET一个简单的问题(关于母模版) 誰有繁體版的 VS.NET2003阿!!!!!!!各位老大能不能共享一下阿! 不勝感激!! 我要重新装我电脑的系统!但原来机子里的项目怎么办?? 想在网站里加入 流量统计代码,得放在每一个页面,有简单的方法吗?比如通过 webconfig 等方式 如何去除字符串中的数字? 很初级的问题:ASP和ASP.net到底不什么不同? DataGrid显示数据的问题 这个问题我都不知道怎么问了,高手给点意见 asp.net 怎样制作爬虫程序的思路及步骤?.
简单些使用控件的自定义分页如gridview,reapter.
还有datapager.
如果数据量大,则用存储过程分页
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="AspPage.ascx.cs" Inherits="AspPage" %>
<asp:Button ID="btnFirst" runat="server" Text="第一页" cssclass="ButtonCss" OnClick="btnFirst_Click" />
<asp:Button ID="btnBack" runat="server" Text="上一页" cssclass="ButtonCss" OnClick="btnBack_Click" />
<asp:Button ID="btnNext" runat="server" Text="下一页" cssclass="ButtonCss" OnClick="btnNext_Click" />
<asp:Button ID="btnLast" runat="server" Text="最后一页" cssclass="ButtonCss" OnClick="btnLast_Click" />
<asp:Label ID="lblMessage" runat="server" Text="Label"></asp:Label>
<asp:TextBox ID="txtPage" runat="server" Width="25px"></asp:TextBox>
<asp:Button ID="btnGo" runat="server" Text="GO" OnClick="btnGo_Click" />实现代码: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 delegate void PageIndexChageDelegete();//定义委托
public partial class AspPage : System.Web.UI.UserControl
{
//有多少条数据。
public int Count
{
set
{
ViewState["count"] = value;
getPageTotal();
setButtonEnabled();
}
get
{
if (ViewState["count"] != null)
{
return Convert.ToInt32(ViewState["count"]); }
else
{
return 0;
} }
} public int PageSize
{
set { ViewState["pageSize"] = value; }
get { return Convert.ToInt32(ViewState["pageSize"]); }
}
//总页数。
public int PageCount
{
set { ViewState["pageCount"] = value; }
get
{
if (ViewState["pageCount"] != null)
{
return Convert.ToInt32(ViewState["pageCount"]);
}
else
{
return 0;
}
}
}
public int CurrentPage
{
set { ViewState["currentPage"] = value; }
get
{
if (ViewState["currentPage"] != null)
{
return Convert.ToInt32(ViewState["currentPage"]);
}
else
{
return 0;
}
}
} public event PageIndexChageDelegete pageIndexChanged;//定义事件 protected void Page_Load(object sender, EventArgs e)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script type='text/javascript' language='javascript'>");
sb.Append(" function DataCheck() ");
sb.Append("{");
sb.Append(" var num = document.getElementById('").Append(this.txtPage.ClientID).Append("').value;");
sb.Append(" if(num =='') ");
sb.Append(" { ");
sb.Append(" alert('请至少输入一个数字!'); ");
sb.Append(" return false; ");
sb.Append(" } ");
sb.Append(" var pattern=/\\d+/ ;");
sb.Append(" var flag=pattern.test(num); ");
sb.Append(" if(!flag) ");
sb.Append(" { ");
sb.Append(" alert('请确认输入的是数字!'); ");
sb.Append(" return false; ");
sb.Append(" } ");
sb.Append(" else ");
sb.Append(" { ");
sb.Append(" if(num>=1 && num<=").Append(PageCount).Append(")");
sb.Append(" { ");
sb.Append(" return true; ");
sb.Append(" } ");
sb.Append(" else ");
sb.Append("{");
sb.Append(" alert('请输入合适的页号!') ;");
sb.Append(" return false; ");
sb.Append(" } ");
sb.Append(" } ");
sb.Append(" } ");
sb.Append("</script>");
Page.RegisterStartupScript("ok", sb.ToString());
this.btnGo.Attributes.Add("onclick", "return DataCheck();");
if (!IsPostBack)
{
getPageTotal();
setButtonEnabled();
this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
}
}
//得到总页数的方法。
public void getPageTotal()
{
if (Count % PageSize == 0)
{
PageCount = Count / PageSize;
}
else
{
PageCount = (Count / PageSize) + 1;
}
this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
}
// 设置按钮的可用性
private void setButtonEnabled()
{
if (PageCount == 1 || PageCount==0)
{
this.btnFirst.Enabled = false;
this.btnBack.Enabled = false;
this.btnLast.Enabled = false;
this.btnNext.Enabled = false;
}
else if (CurrentPage == PageCount)
{
this.btnNext.Enabled = false;
this.btnLast.Enabled = false;
this.btnFirst.Enabled = true;
this.btnBack.Enabled = true;
}
else if (CurrentPage == 1)
{
this.btnBack.Enabled = false;
this.btnFirst.Enabled = false;
this.btnLast.Enabled = true;
this.btnNext.Enabled = true;
}
else
{
this.btnNext.Enabled = true;
this.btnLast.Enabled = true;
this.btnFirst.Enabled = true;
this.btnBack.Enabled = true;
}
}
//点击第一页返回第一页
protected void btnFirst_Click(object sender, EventArgs e)
{
CurrentPage = 1;
if (pageIndexChanged != null)
{
pageIndexChanged();
}
setButtonEnabled();
this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount); }
//上一页的实现代码
protected void btnBack_Click(object sender, EventArgs e)
{
CurrentPage--;
if (pageIndexChanged != null)
{
pageIndexChanged();
}
setButtonEnabled();
this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
}
//下一页的实现代码
protected void btnNext_Click(object sender, EventArgs e)
{
CurrentPage++;
if (pageIndexChanged != null)
{
pageIndexChanged();
}
setButtonEnabled();
this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
}
//最后一页的实现代码
protected void btnLast_Click(object sender, EventArgs e)
{
CurrentPage = PageCount;
if (pageIndexChanged != null)
{
pageIndexChanged();
}
setButtonEnabled();
this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
}
//任意页的跳转
protected void btnGo_Click(object sender, EventArgs e)
{
CurrentPage = Convert.ToInt32(this.txtPage.Text);
if (pageIndexChanged != null)
{
pageIndexChanged();
}
setButtonEnabled();
this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
}
}
C#高效分页代码
可以参考:
http://blog.csdn.net/snoopy83101/archive/2009/09/09/4536582.aspx
//首页
protected void LinkButton1_Click(object sender, EventArgs e)
{
this.GridView1.PageIndex = 0;
DataBind();
}
//上一页
protected void LinkButton2_Click(object sender, EventArgs e)
{
if (this.GridView1.PageIndex > 0)
{
this.GridView1.PageIndex = this.GridView1.PageIndex - 1;
DataBind();
}
}
//下一页
protected void LinkButton3_Click(object sender, EventArgs e)
{
if (this.GridView1.PageIndex < this.GridView1.PageCount)
{
this.GridView1.PageIndex = this.GridView1.PageIndex + 1;
DataBind();
}
}
//尾页
protected void LinkButton4_Click(object sender, EventArgs e)
{
this.GridView1.PageIndex = this.GridView1.PageCount;
DataBind();
}
非常方便,什么都可以自定义,显示的列,表名,条件等等
不变以后就这了