Json ist ein leichtes Datenaustauschformat. Aufgrund seiner Bequemlichkeit bei der Übertragung von Datenformaten möchte ich es heute versehentlich auf die Paging-Implementierung anwenden, und seine Anwendung ist effizient und wichtig. Über Sex gibt es nicht viel zu sagen
Die Haupttechnologien dieses Artikels: Reflexionsmechanismus, Json-Datenformat, Jquery
Für die Vielseitigkeit der Anwendung muss zunächst der Reflexionsmechanismus verwendet werden, um jede Art von Ergebnisobjekt, das zurückgegeben werden soll, in ein Json-Typformat zu konvertieren.
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; }
Nachdem die mehreren zurückzugebenden Objekte in Objekte vom Typ Json konvertiert wurden, sollten am Ende die Paging-Informationen hinzugefügt werden, und schließlich werden die mehreren Json-Strings in einen vollständigen Json-Typ konvertiert
{"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}
Wenn Informationen an den Client gesendet werden, verwenden Sie einfach jquery, um die Daten des Objekts zu empfangen. Auf diese Weise kann der Stil des Vordergrunds von den im Hintergrund übertragenen Daten getrennt werden, was den Code weiter vereinfacht
$.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"]); });
Aktualisierungsfreier Paging-Code, implementiert mit JQuery und JSon. Der spezifische Code ist wie folgt
Vier Dateien erforderlich
Eine Entitätsklassendatei CategoryInfoModel.cs
ein SqlHelper SQLHelper.cs
Ein serverseitiger AJAX-Handler PagedService.ashx
Ein Client ruft die Seite WSXFY.htm
auf
Ich werde CategoryInfoModel.cs und SQLHelper.cs nicht schreiben, jeder weiß, um welche Dateien es sich handelt
Der PagedService.ashx-Code lautet wie folgt
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对象 } }
Der WSXFY.htm-Code lautet wie folgt
<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>
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er kann Ihnen dabei helfen, den Paging-Effekt zu erzielen.