实现JQuery与json实现的无刷新分页。这个分享我觉得很值得。先看下个图:

而无刷新分页可以解决这个问题,上面播放着视频,下面我点下一页看着评论,现在大部分的网站都是无刷新分页。
源码如下(我是采用一页显示10条记录):
需要四个文件
一个实体类文件 CategoryInfomodel.cs
一个sqlHelper SQLHelper.cs
一个Ajax服务端处理程序 Pagedservice.ashx
一个客户端调用页面 WSXFY.htm
CategoryInfomodel.cs和SQLHelper.cs我就不写了,都知道是什么文件
PagedService.ashx,代码如下:
using System.WEB.Script.Serialization; public void PRocessRequest(httpContext context) { context.Response.Contenttype = "text/plAIn"; string strAction = context.Request["Action"]; //取页数 if (strAction == "getPageCount") { String strSQL = "select COUNT(*) FROM CategoryInfo"; int intRecordCount = SqlHelper.ExecuteScalar(strSQL); int intPageCount = intRecordCount / 10; if (intRecordCount % 10 != 0) { intPageCount++; } context.Response.Write(intPageCount); }//取每页数据 else if (strAction == "GetPagedata") { string strPageNum = context.Request["PageNum"]; int intPageNum = Convert.ToInt32(strPageNum); int intStartRowIndex = (intPageNum - 1) * 10 + 1; int intendRowIndex = (intPageNum) * 10 + 1; string strSQL = "SELECT * FROM ( SELECT ID,CategoryName,Row_Number() OVER(ORDER BY ID ASC) AS rownum FROM CategoryInfo) AS t"; strSQL += " WHERE t.rownum >= " + intStartRowIndex + " AND t.rownum <= " + intEndRowIndex; DataSet ds = new DataSet(); SqlConnection conn = SqlHelper.GetConnection(); ds = SqlHelper.ExecuteDataset(conn, CommandType.Text, strSQL); list<CategoryInfoModel> categoryinfo_list = new List<CategoryInfoModel>();//定义实体集合 for (int i = 0; i < ds.tables[0].Rows.Count; i++) { CategoryInfoModel categoryinfo = new CategoryInfoModel(); categoryinfo.CategoryInfoID = Convert.ToInt32(ds.tables[0].Rows[i]["ID"]); categoryinfo.CategoryName = ds.TABles[0].Rows[i]["CategoryName"].toString(); categoryinfo_list.Add(categoryinfo); } javascriptSerializer JSs = new JavaScriptSerializer(); context.Response.Write(jss.Serialize(categoryinfo_list));//序列化实体集合为Javascript对象 } }
WSXFY.htm
<html> <head> <title>无刷新分页</title> <script type="text/javascript" src="../Scripts/jQuery-1.5.1.min.js"></script> <script type="text/javascript"> $(function () { $.post("PagedService.ashx", { "Action": "GetPageCount" }, function (response, status) { for (var i = 1; i <= response; i++) { var td = $("<td><a href=''>" + i + "</a></td>"); $("#trPage").append(td); td.click(function (e) { e.preventDefault(); //不要导向链接 $.post("PagedService.ashx", { "Action": "GetPageData", "PageNum":$(this).text() }, function (response, status) { var categorys = $.parseJSON(response); $("#ulCategory").empty(); for (var i = 0; i < categorys.length; i++) { var category = categorys[i]; var li = $("<li>" + category.CategoryInfoID + "-" + category.CategoryName + "</li>"); $("#ulCategory").APPend(li); } }); }); } }); }); </script> </head> <body> <ul id="ulCategory"></ul> <table> <tr id="trPage"> </tr> </table> </body> </HTML>
效果如下(页面好不好看取决于你画DOM 的水平了,我这里只是简单的画了画) 







网友评论文明上网理性发言 已有0人参与
发表评论: