SqlServer分页:
select * from 表 order by id OFFSET PageIndex*pagenum ROWS FETCH next pagenum rows only
MySql分页:
select * from 表 表名称 WHERE id_pk > (pageNum*10) ORDER BY id_pk ASC LIMIT M
1 在网页中对显示的信息进行分页,需要确定的参数分为向后台传递的参数和从后台接受的参数。
向后台传递的参数:
1)当前的页面显示的是哪一页的信息即当前页数 pageIndex
2)页面上每页要显示的信息数据的大小即pageIndex
只有确定向后台发送要显示的信息数据的是第几页和每页的含有信息大小,后台才能通过业务逻辑确定返回给前台的信息数据。
从后台接收的参数:
1)由pageIndex和pageIndex确定的信息
2)分页标签(非必须,在这里我采用分页标签由后台传递)
2 代码
1) 前台
<script type="text/javascript">
$(function () {
initTable();
});
//初始化表格
function initTable(postData) {
$.getJSON("BookInfoListLoad.ashx", postData, function (data) {
$("#AddDiv").html("");
for (var i in data.NewsList) {
var strTr = '<table style="border-bottom: 1px solid red;" id="tbBody"> <tbody><tr>';
strTr += '<td rowspan="2"><img style="CURSOR: hand" height="121" alt="' + data.NewsList[i].Title + ' " hspace="4" src="' + data.NewsList[i].ImgTitle + '" width="95"></td> ';
strTr += ' <td style="FONT-SIZE: small; COLOR: red" width="650"><a class="booktitle" id="link_prd_name" href="/' + Math.floor( data.NewsList[i].Bid/5000) + '/' + data.NewsList[i].Bid + '.html" " target="_blank" name="link_prd_name">"' + data.NewsList[i].Title + '"</a> </td> </tr>';
strTr += '<tr> <td align="left"><span style="FONT-SIZE: 12px; LINE-HEIGHT: 20px">"' + data.NewsList[i].Author + '"</span><br> <br> <span style="FONT-SIZE: 12px; LINE-HEIGHT: 20px">"' + data.NewsList[i].TitleHot + '"</span> </td> </tr>';
strTr += '<tr> <td align="right" colspan="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 13px; LINE-HEIGHT: 20px">¥原价:</span> </td>';
strTr += '<td align="right" colspan="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 13px; LINE-HEIGHT: 20px">"' + data.NewsList[i].PriceOld + '"</span> </td>';
strTr += '<td align="right" colspan="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 13px; LINE-HEIGHT: 20px">现:</span> </td>';
strTr += '<td align="right" colspan="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 13px; LINE-HEIGHT: 20px">"' + data.NewsList[i].PriceNew + '" </span> </td>';
strTr += ' </tr> </tbody> </table>';
$("#AddDiv").append(strTr);
}
//把分页的标签放到页面里面去
$("#navDiv").html(data.NavHtml);
//给分页的超级链接绑定点击事件
$(".pageLink").click(function () {
var href = $(this).attr("href");
var queryString = href.substr(href.lastIndexOf('?') + 1);
initTable(queryString);
return false;
});
});
}
</script>
<div id="AddDiv">
</div>
<div id="navDiv">
</div>
2)
public class BookInfoListLoad : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
int pageSize = int.Parse(context.Request["pageSize"] ?? "10");
int pageIndex = int.Parse(context.Request["pageIndex"] ?? "1");
int total = 0;
context.Response.ContentType = "text/plain";
BLL.BookInfo mainService = new BLL.BookInfo();
#region //拿到当前页的数据
// List<Model.BookInfo> list = mainService.LodePageData(pageIndex, pageSize, out total);
DataTable dt= mainService.GetListByPage("", "", (pageIndex - 1) * pageSize + 1, pageSize * pageIndex).Tables[0];
List<Model.BookInfo> list1 = mainService.DataTableToList(dt);
//int rowCount = mainService.GetRecordCount("");// Convert.ToInt32(Math.Ceiling(rowsCount * 1.0 / pageSize));
total = mainService.GetRecordCount("");
#endregion
string navStrHtml = Common.showPage.ShowPageNavigate(pageSize, pageIndex, total);
System.Web.Script.Serialization.JavaScriptSerializer scriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonStr = scriptSerializer.Serialize(new { NewsList = list1, NavHtml = navStrHtml });
context.Response.Write(jsonStr);
}
public bool IsReusable
{
get
{
return false;
}
}
}
附1:
public class showPage
{
/// <summary>
///
/// </summary>
/// <param name="pageSize">一页多少条</param>
/// <param name="currentPage">当前页</param>
/// <param name="totalCount">总条数</param>
/// <returns></returns>
public static string ShowPageNavigate(int pageSize, int currentPage, int totalCount)
{
string redirectTo = "";
pageSize = pageSize == 0 ? 3 : pageSize;
var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
var output = new StringBuilder();
if (totalPages > 1)
{
if (currentPage != 1)
{//处理首页连接
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex=1&pageSize={1}'>首页</a> ", redirectTo, pageSize);
}
if (currentPage > 1)
{//处理上一页的连接
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>上一页</a> ", redirectTo, currentPage - 1, pageSize);
}
else
{
// output.Append("<span class='pageLink'>上一页</span>");
}
output.Append(" ");
int currint = 5;
for (int i = 0; i <= 10; i++)
{//一共最多显示10个页码,前面5个,后面5个
if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
{
if (currint == i)
{//当前页处理
//output.Append(string.Format("[{0}]", currentPage));
output.AppendFormat("<a class='cpb' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage, pageSize, currentPage);
}
else
{//一般页处理
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint);
}
}
output.Append(" ");
}
if (currentPage < totalPages)
{//处理下一页的链接
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>下一页</a> ", redirectTo, currentPage + 1, pageSize);
}
else
{
//output.Append("<span class='pageLink'>下一页</span>");
}
output.Append(" ");
if (currentPage != totalPages)
{
output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>末页</a> ", redirectTo, totalPages, pageSize);
}
output.Append(" ");
}
output.AppendFormat("第{0}页 / 共{1}页", currentPage, totalPages);//这个统计加不加都行
return output.ToString();
}
}
网友评论