Jquery+json to achieve paging effect

Source: Internet
Author: User

Son as a lightweight data interchange format, due to the convenience of its transmission data format, today accidentally want to apply it to the paging implementation, paging as a web development a long-term topic, its application of efficiency and importance is not much to say
The main techniques in this paper are: Reflection mechanism, JSON data format, jquery
For the versatility of the application, it is first necessary to convert any type of result object that will be returned to a JSON-type format based on the reflection mechanism.

public static String toJSON(Object obj) { HashMap map = new HashMap(); Class c = obj.getClass(); // 利用反射机 制,把里面所有的属性,反射出来使用,这样放入任何一个对象, 都可以找到他们的属性, // 把这些属性的名,和属性的值,封装成一个map里, Field[] fields = c.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { String name = fields[i].getName(); try { fields[i].setAccessible( true ); Object o = fields[i].get(obj); i f (o instanceof Number) { map.put( "" " + name + " "" , o.toString()); } else if (o instanceof String) { map.put( "" " + name + " "" , "" " + o.toString() + " "" ); } } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } } / / 把map对象变成字符串 // 这些格式还需要把=变成: String s = map.toString(); / /System.out.println(s); String str = s.replaceAll( "" = ", " ":" ); //System.out.println(str); return str; }After converting multiple objects that are to be returned to JSON-type objects, finally add paging information and eventually convert multiple JSON strings into an entire JSON type { "0" :{ "id" : "0" , "name" : "dong0" , "age" :21}, "1" :{ "id" : "1" , "name" : "dong1" , "age" :21}, "2" :{ "id" : "2" , "name" : "dong2" , "age" :21}, "3" :{ "id" : "3" , "name" : "dong3" , "age" :21}, "4" :{ "id" : "4" , "name" : "dong4" , "age" :21}, "5" :{ "id" : "5" , "name" : "dong5" , "age" :21}, "6" :{ "id" : "6" , "name" : "dong6" , "age" :21}, "7" :{ "id" : "7" , "name" : "dong7" , "age" :21}, "8" :{ "id" : "8" , "name" : "dong8" , "age" :21}, "9" :{ "id" : "9" , "name" : "dong9" , "age" :21}, "10" :{ "firstPage" :1, "currentPage" :1, "default_Record_Num" :10, "lastPage" :10, "frontPage" :1, "sum" :100, "nextPage" :2}, "length" :11}When the information is sent to the client, only jquery receives the data of the object, which allows the foreground style to be separated from the background data, which simplifies the code $.getJSON( "result.jsp?page=" +p, function (json) { $( "#show" ).html( "<tr><th>用户ID</th><th>用户名</th><th>用户年龄</th></tr>" ); for ( var i=0 ; i<json.length-1; i++){ $( "#show" ).append( "<tr><td>" +json[i][ "id" ]+ "</td><td>" +json[i][ "name" ]+ "</ td><td>" +json[i][ "age" ]+ "</td></tr>" ); } $( "#currentPage" ).attr( "value" ,json[json.length-1][ "currentPage" ]); $( "#pageCount" ).attr( "value" ,json[json.length-1][ "lastPage" ]); });

Use jquery and JSON to implement the no-refresh paging code, the code is as follows

Four files required
An entity class file CategoryInfoModel.cs
A SQLHelper SQLHelper.cs
An AJAX server-side handler Pagedservice.ashx
A client Invoke page wsxfy.htm
CategoryInfoModel.cs and SQLHelper.cs, I don't write, I know what the papers are.
The PAGEDSERVICE.ASHX code is as follows

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对象 } } The wsxfy.htm code is as follows < 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 >

Jquery+json to achieve paging effect

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.