.Net通用分页类,网页显示.静态调用,实为方便
只有二个静态方法,不用在使用中带页码参数,在类中自动获取,很为方便:
GetPagerHTML方法得到显示的页码, 如:首 页 上一页 [1] [2] [3] [4] [5] 下一页 末 页
GetPagerTable方法得到指定页的数据.
调用方法:
DBHelper DB = new DBHelper(); DB.OpenConnection(); string sqlString = "select * From Table_Article"; //得到一个DataTable DataTable TableB = DB.GetDataTable(sqlString); //把页码显示到页面上,这一部一定要在Pager.GetPagerTable方法前面; Label2.Text = Pager.GetPagerHTML(TableB.Rows.Count, 3); //得到指定页的数据 TableB = Pager.GetPagerTable(TableB, 3); GridView2.DataSource = TableB; GridView2.DataBind();
分页类代码如下:
public class Pager
{
/// <summary>
/// 显示分类字符串 返回字符如:首页 上一页 [2] [3] [4] [5] [6] 下一页 末页 [页次4/10页] [共30条]
/// </summary>
/// <param name="RecordCount">记录总数</param>
/// <param name="PageSize">每页显示多少条</param>
/// <returns></returns>
public static string GetPagerHTML(int RecordCount, int PageSize)
{
//当前URL地址所有参数
string QueryString = HttpContext.Current.Request.QueryString.ToString();
//返回的显示页字符串
string BackPageStr = "";
//总页数
int pageCount = RecordCount / PageSize;
if (RecordCount % PageSize > 0)
{
pageCount = RecordCount / PageSize+1;
}
//当前页数
string IndexPage = HttpContext.Current.Request.QueryString["page"];
int page=1;
if (IndexPage != null)
{
try
{
page = Convert.ToInt32(IndexPage);
}catch{
page = 1;
}
}
if (page > pageCount)
{
page = pageCount;
}
//URL后面的参数
string url = "";
string strq = "";
string[] arrq = QueryString.Split('&');
if (arrq.Length > 0)
{
for (int i = 0; i < arrq.Length; i++)
{
string[] arrStrq = arrq[i].Split('=');
if (!arrStrq[0].Equals("page"))
{
//if (!arrStrq[0].Equals(""))
//{
// if (strq.Trim().Equals(""))
// {
// strq = "?" + arrStrq[0] + "=" + arrStrq[1];
// }
// else
// {
// strq += "&" + arrStrq[0] + "=" + arrStrq[1];
// }
//}
strq += arrq[i];
}
}
}
if (strq.Equals(""))
{
url += "?page=";
}
else
{
url += "?" + strq + "&page=";
}
//是否为首页
if (page > 1)
{
BackPageStr+="<a href='" + url + (1).ToString() + "'>首 页</a>\n";
BackPageStr += "<a href='" + url + (page - 1).ToString() + "'>上一页</a>\n";
}
//显示当前页的前后5页 [1] [2] [3] [4] [5]
int StartPage;
int EndPage;
if (pageCount > 5 )
{
StartPage = page - 2;
EndPage = page + 2;
if (StartPage <= 0) { StartPage = 1; }
if (EndPage >= pageCount) { EndPage = pageCount; }
if ((EndPage - StartPage) < 4 && StartPage == 1) { EndPage = StartPage + 4; }
if ((EndPage - StartPage) < 4 && EndPage == pageCount) { StartPage = EndPage - 4; }
}
else {
StartPage = 1;
EndPage = pageCount;
}
for (int i = StartPage; i <= EndPage; i++)
{
if (i == page)
{
BackPageStr += " [<a href='" + url + i.ToString() + "'><b>" + i.ToString() + "</b></a>] \n";
}
else
{
BackPageStr += " [<a href='" + url + i.ToString() + "'>" + i.ToString() + "</a>] \n";
}
}
//是否为最后一页
if (page < pageCount)
{
BackPageStr += "<a href='" + url + (page + 1).ToString() + "'>下一页</a>\n";
BackPageStr += "<a href='" + url + pageCount.ToString() + "'>末 页</a>\n";
}BackPageStr += " [页次" + page.ToString() + "/" + pageCount.ToString() + "页] ";
BackPageStr += " [共" + RecordCount.ToString() + "条] ";
return BackPageStr;
}
/// <summary>
/// 对DataTable进行分页,起始页为1
/// </summary>
/// <param name="dt">要显示的数据表</param>
/// <param name="PageSize">每页显示多少条数据</param>
/// <returns></returns>
public static DataTable GetPagerTable(DataTable dt, int PageSize)
{
//总条数
int RecordCount = dt.Rows.Count;
//总页数
int pageCount = RecordCount / PageSize;
if (RecordCount % PageSize > 0)
{
pageCount = RecordCount / PageSize + 1;
}
//当前页数
string IndexPage = HttpContext.Current.Request.QueryString["page"];
int page = 1;
if (IndexPage != null)
{
try
{
page = Convert.ToInt32(IndexPage);
}
catch
{
page = 1;
}
}
if (page > pageCount)
{
page = pageCount;
}
DataTable newdt = dt.Copy();
newdt.Clear();
int rowbegin = ((page - 1) * PageSize);
int rowend = page * PageSize;
if (rowbegin >= RecordCount)
return newdt;
if (rowend > dt.Rows.Count)rowend = dt.Rows.Count;
for (int i = rowbegin; i <= rowend - 1; i++)
{
DataRow newdr = newdt.NewRow();
DataRow dr = dt.Rows[i];
foreach (DataColumn column in dt.Columns)
{
newdr[column.ColumnName] = dr[column.ColumnName];
}
newdt.Rows.Add(newdr);
}
return newdt;
}
}
欢迎加入JAVA技术交流QQ群:179945282
欢迎加入ASP.NET(C#)交流QQ群:17534377