说明:数据的分页显示,就是根据数据源的总记录数和每页显示的记录数,计算出总共分出的页
面数,然后根据当前页面的页面号计算出要显示的数据记录的起始范围(即开始记录和终止记录),
有了这个起始范围就可以方便的显示出当前页面的数据。当前页面号的获取,可以通过URL传值的
方式传递。例:<a href = ?pages=1>这个URL链接,可以用 Request["pages"]的方式获取
当前页面号。具体方法参考以下代码:
/// <summary>
/// 分页函数
/// </summary>
/// <param name="dtRecord">数据源</param>
private void SplitPage(DataTable dtRecord)
{
string htmlPage = "";
int pageSize = 15; //每页显示记录数
int listStep = 10; //最多显示分页页数
int pages = 1; //当前页,默认显示第一页
int pageCount = 0; //定义总页数
int recordCount = 0; //定义总记录数
int listBegin = 0; //从第几页开始显示分页信息
int listEnd = 0; //分页信息显示到第几页
if (dtRecord == null || dtRecord.Rows.Count == 0)
{
return;
}
recordCount = dtRecord.Rows.Count;
//确定数据记录要显示的页面数
if(recordCount > 0)
{
pageCount = recordCount / pageSize;
}
if(recordCount % pageSize > 0)
{
pageCount++;
}
//取得当前页数值,并判断
if(Request["pages"] != null)
{
pages = Convert.ToInt32(Request["pages"]);
}
if(pages < 1)
{
pages = 1;
}
if(pages > pageCount)
{
pages = pageCount;
}
listBegin = pages - listStep / 2; //从第几页开始显示分页信息
if (listBegin < 1)
{
listBegin = 1;
}
listEnd = listBegin + listStep - 1; //分页信息显示到第几页
if (listEnd > pageCount)
{
listEnd = pageCount;
listBegin = listEnd - listStep + 1;
if (listBegin < 1)
{
listBegin = 1;
}
}
//确认当前页面的开始记录和终止记录
int recordBegin = pageSize * (pages - 1);
int recordEnd = recordBegin + pageSize - 1;
if(recordEnd > recordCount - 1)
{
recordEnd = recordCount - 1;
}
//显示数据记录
htmlPage = DisplayDataRecord(dtRecord, recordBegin, recordEnd);
Response.Write(htmlPage);
htmlPage = "";
//显示分页列表
htmlPage += GetPageList(pages, pageCount, listBegin, listEnd);
Response.Write(htmlPage);
htmlPage = "";
}
/// <summary>
/// 显示数据记录
/// </summary>
/// <param name="dtRecord">数据源</param>
/// <param name="recordBegin">记录开始位置</param>
/// <param name="recordEnd">记录结束位置</param>
/// <returns>HTML字符串</returns>
private string DisplayDataRecord(DataTable dtRecord, int recordBegin, int recordEnd)
{
string html = "";
for (int i = recordBegin; i <= recordEnd; i++)
{
//显示数据记录的内容
html += " …";
}
return html;
}
/// <summary>
///显示分页列表
/// </summary>
/// <param name="pages">当前页</param>
/// <param name="pageCount">总页数</param>
/// <param name="listBegin">列表开始页</param>
/// <param name="listEnd">列表结束页</param>
/// <returns>HTML字符串</returns>
public string GetPageList(int pages, int pageCount, int listBegin, int listEnd)
{
string html = "";
html += "<DIV class = pageList>";
//显示首页、上一页
if (pages > 1)
{
html += "<a href = ?pages=1>首页</a>";
html += "<a href = ?pages=" + (pages - 1) + ">上一页</a>";
}
//显示分页码
for (int i = listBegin; i <= listEnd; i++)
{
if (i != pages)
{
html += "<a href = ?pages=" + i + ">" + i + "</a>";
}
else
{
html += "<b>"+ i + "</b>";
}
}
//显示末页、下一页
if (pages != pageCount)
{
html += "<a href = ?pages=" + (pages + 1) + ">下一页</a>";
html += "<a href = ?pages=" + pageCount + ">末页</a>";
}
html += "</DIV>";
return html;
}
/// 分页函数
/// </summary>
/// <param name="dtRecord">数据源</param>
private void SplitPage(DataTable dtRecord)
{
string htmlPage = "";
int pageSize = 15; //每页显示记录数
int listStep = 10; //最多显示分页页数
int pages = 1; //当前页,默认显示第一页
int pageCount = 0; //定义总页数
int recordCount = 0; //定义总记录数
int listBegin = 0; //从第几页开始显示分页信息
int listEnd = 0; //分页信息显示到第几页
if (dtRecord == null || dtRecord.Rows.Count == 0)
{
return;
}
recordCount = dtRecord.Rows.Count;
//确定数据记录要显示的页面数
if(recordCount > 0)
{
pageCount = recordCount / pageSize;
}
if(recordCount % pageSize > 0)
{
pageCount++;
}
//取得当前页数值,并判断
if(Request["pages"] != null)
{
pages = Convert.ToInt32(Request["pages"]);
}
if(pages < 1)
{
pages = 1;
}
if(pages > pageCount)
{
pages = pageCount;
}
listBegin = pages - listStep / 2; //从第几页开始显示分页信息
if (listBegin < 1)
{
listBegin = 1;
}
listEnd = listBegin + listStep - 1; //分页信息显示到第几页
if (listEnd > pageCount)
{
listEnd = pageCount;
listBegin = listEnd - listStep + 1;
if (listBegin < 1)
{
listBegin = 1;
}
}
//确认当前页面的开始记录和终止记录
int recordBegin = pageSize * (pages - 1);
int recordEnd = recordBegin + pageSize - 1;
if(recordEnd > recordCount - 1)
{
recordEnd = recordCount - 1;
}
//显示数据记录
htmlPage = DisplayDataRecord(dtRecord, recordBegin, recordEnd);
Response.Write(htmlPage);
htmlPage = "";
//显示分页列表
htmlPage += GetPageList(pages, pageCount, listBegin, listEnd);
Response.Write(htmlPage);
htmlPage = "";
}
/// <summary>
/// 显示数据记录
/// </summary>
/// <param name="dtRecord">数据源</param>
/// <param name="recordBegin">记录开始位置</param>
/// <param name="recordEnd">记录结束位置</param>
/// <returns>HTML字符串</returns>
private string DisplayDataRecord(DataTable dtRecord, int recordBegin, int recordEnd)
{
string html = "";
for (int i = recordBegin; i <= recordEnd; i++)
{
//显示数据记录的内容
html += " …";
}
return html;
}
/// <summary>
///显示分页列表
/// </summary>
/// <param name="pages">当前页</param>
/// <param name="pageCount">总页数</param>
/// <param name="listBegin">列表开始页</param>
/// <param name="listEnd">列表结束页</param>
/// <returns>HTML字符串</returns>
public string GetPageList(int pages, int pageCount, int listBegin, int listEnd)
{
string html = "";
html += "<DIV class = pageList>";
//显示首页、上一页
if (pages > 1)
{
html += "<a href = ?pages=1>首页</a>";
html += "<a href = ?pages=" + (pages - 1) + ">上一页</a>";
}
//显示分页码
for (int i = listBegin; i <= listEnd; i++)
{
if (i != pages)
{
html += "<a href = ?pages=" + i + ">" + i + "</a>";
}
else
{
html += "<b>"+ i + "</b>";
}
}
//显示末页、下一页
if (pages != pageCount)
{
html += "<a href = ?pages=" + (pages + 1) + ">下一页</a>";
html += "<a href = ?pages=" + pageCount + ">末页</a>";
}
html += "</DIV>";
return html;
}
分页形式如下图所示: