首页 > 代码库 > ASP.NET中实现Ajax分页
ASP.NET中实现Ajax分页
在页面中指定一个div容器来接收动态生成的分页数据:
1 <div id="div_menu">2 </div>
使用jQuery来请求并处理Json格式数据:
1 //定义页码与页容量 2 var pageIndex = 1; 3 var pageSize = 15; 4 var pageCount = 0; 5 var recordCount = 0; 6 AjaxGetData(pageIndex, pageSize); 7 //Ajax获取数据 8 function AjaxGetData(index, size) { 9 $.ajax({10 url: "ProcessData.aspx",11 type: "Get",12 data: "pageindex=" + index + "&pagesize=" + size + "&rnd=" + new Date(),13 dataType: "json",14 success: function (data) {15 var htmlStr = "";16 htmlStr += "<table width=100%>";17 for (var i = 0; i < data.Exercise_object.length; i++) {18 htmlStr += "<tr><td class=‘rr‘ onm ouseover=‘javascript:onOver(this)‘ onm ouseout=‘javascript:onOut(this)‘onclick=‘javascript:onDown(this);‘>";19 htmlStr += "<a href=http://www.mamicode.com/‘voucher/Exercise_Detail.aspx?id=" + data.Exercise_object[i]._question_id + "‘ class=‘cpx12huei‘ target=‘content‘>";20 htmlStr += "第" + data.Exercise_object[i]._row_number + "题";21 htmlStr += "</a>";22 htmlStr += "</td></tr>";23 }24 htmlStr += "<tr style=‘text-align:center;‘>";25 htmlStr += "<td>";26 recordCount = Number(data.Count);27 pageCount = Math.ceil(recordCount / pageSize);28 htmlStr += "共" + recordCount + "条记录 共<span id=‘count‘>" + pageCount + "</span>页 ";29 htmlStr += "<a href=‘javascript:void‘ onclick=‘GoToPrePage()‘ id=‘aPrePage‘ >前一页</a> ";30 htmlStr += "<a href=‘javascript:void‘ onclick=‘GoToNextPage()‘ id=‘aNextPage‘>后一页</a> ";31 htmlStr += "</td>";32 htmlStr += "</tr>";33 htmlStr += "</table>";34 $("#div_menu").html(htmlStr);35 },36 error: function (XMLHttpRequest, textStatus, errorThrown) {37 alert(XMLHttpRequest);38 alert(textStatus);39 alert(errorThrown);40 }41 });42 }43 //前一页44 function GoToPrePage() {45 pageIndex -= 1;46 if (pageIndex < 1) {47 pageIndex = 1;48 return;49 }50 AjaxGetData(pageIndex, pageSize);51 }52 //后一页53 function GoToNextPage() {54 pageIndex += 1;55 if (pageIndex > pageCount) {56 pageIndex = pageCount;57 return;58 }59 AjaxGetData(pageIndex, pageSize);60 }
新建一个一般处理程序,来处理Ajax的异步请求:
1 private readonly BLL.D_Accounting_Entry_Exercise bll = new BLL.D_Accounting_Entry_Exercise(); 2 private string _action = "0"; 3 protected void Page_Load(object sender, EventArgs e) 4 { 5 Int32 pageIndex = Int32.MinValue; 6 Int32 pageSize = Int32.MinValue; 7 8 if (Request["action"] != null) 9 this._action = Request["action"]; 10 11 JavaScriptSerializer jss = new JavaScriptSerializer(); 12 if (Request["pageindex"] != null) 13 { 14 pageIndex = Int32.Parse(Request["pageindex"].ToString()); 15 pageSize = Request["pagesize"] != null ? Int32.Parse(Request["pagesize"].ToString()) : 10; 16 17 //处理接收到的数据 18 int start = 0; 19 int end = 0; 20 21 if (this._action == "0") 22 { 23 int recordCount = getAllCount(); 24 int pageCount = (int)Math.Ceiling(((double)recordCount) / ((double)pageSize)); 25 if (pageIndex > pageCount) 26 { 27 pageIndex = pageCount; 28 } 29 else if (pageIndex < 1) 30 pageIndex = 1; 31 start = (pageIndex - 1) * pageSize + 1; 32 end = pageIndex * pageSize; 33 34 IList<Exercise> exerciseLists = new List<Exercise>(); 35 Exercise exercise = null; 36 DataSet set = GetDataFromDB(start, end); 37 int id = 0; 38 for (int i = 0; i < set.Tables[0].Rows.Count; i++) 39 { 40 //将第一行记录的ID存入Session 41 Session["first_id"] = set.Tables[0].Rows[0]["question_id"]; 42 exercise = new Exercise(); 43 id = Convert.ToInt32(set.Tables[0].Rows[i]["question_id"].ToString()); 44 exercise._question_id = id; 45 exercise._question_content = set.Tables[0].Rows[i]["question_content"].ToString(); 46 exercise._question_answer = set.Tables[0].Rows[i]["question_answer"].ToString(); 47 exercise._question_analyze = set.Tables[0].Rows[i]["question_analyze"].ToString(); 48 exercise._question_status = Convert.ToInt32(set.Tables[0].Rows[i]["question_status"].ToString()); 49 exercise._user_id = Convert.ToInt32(set.Tables[0].Rows[i]["user_id"].ToString()); 50 exercise._add_time = Convert.ToDateTime(set.Tables[0].Rows[i]["add_time"].ToString()); 51 exercise._row_number = Convert.ToInt32(set.Tables[0].Rows[i]["Row"].ToString()); 52 exerciseLists.Add(exercise); 53 } 54 if (exerciseLists.Count > 0) 55 { 56 Response.Write("{\"Count\":" + recordCount + ",\"Exercise_object\":" + jss.Serialize(exerciseLists) + "}"); 57 } 58 else 59 { 60 Response.Write("{\"Count\":0,\"Exercise_object\":null}"); 61 } 62 Response.End(); 63 } 64 else if (this._action == "1") 65 { 66 string classID = Request["classid"]; 67 string opSign = Request["opsign"]; 68 int recordCount = GetYSPXCount(opSign, classID); 69 int pageCount = (int)Math.Ceiling(((double)recordCount) / ((double)pageSize)); 70 if (pageIndex > pageCount) 71 { 72 pageIndex = pageCount; 73 } 74 else if (pageIndex < 1) 75 pageIndex = 1; 76 start = (pageIndex - 1) * pageSize + 1; 77 end = pageIndex * pageSize; 78 79 IList<operationModel> operList = new List<operationModel>(); 80 operationModel model = null; 81 DataSet set = GetYSPXRecords(start.ToString(), end.ToString(), classID, opSign); 82 for (int i = 0; i < set.Tables[0].Rows.Count; i++) 83 { 84 model = new operationModel(); 85 model.OD_ID = int.Parse(set.Tables[0].Rows[i]["od_id"].ToString()); 86 model.OD_TITLE = set.Tables[0].Rows[i]["od_title"].ToString(); 87 model._row_number = Convert.ToInt32(set.Tables[0].Rows[i]["Row"].ToString()); 88 operList.Add(model); 89 } 90 if (operList.Count > 0) 91 { 92 Response.Write("{\"Count\":" + recordCount + ",\"operationModel\":" + jss.Serialize(operList) + "}"); 93 } 94 else 95 { 96 Response.Write("{\"Count\":0,\"operationModel\":null}"); 97 } 98 Response.End(); 99 }100 }101 }102 103 /// <summary>104 /// 从数据库中获取总启用记录的条数105 /// </summary>106 /// <returns></returns>107 private int getAllCount()108 {109 return bll.GetRecordCount("question_status=1");110 }111 112 113 /// <summary>114 /// 从数据库中获取数据115 /// </summary>116 /// <param name="pageIndex">开始</param>117 /// <param name="pageSize">结束</param>118 /// <returns>数据集对象</returns>119 private DataSet GetDataFromDB(int pageIndex, int pageSize)120 {121 DataSet set = bll.GetListByPage("", "", pageIndex, pageSize);122 return set;123 }
实现效果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。