在页面中指定一个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‘ onmouseover=‘javascript:onOver(this)‘ onmouseout=‘javascript:onOut(this)‘onclick=‘javascript:onDown(this);‘>"; 19 htmlStr += "<a href=‘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 }
实现效果:
ASP.NET中实现Ajax分页
时间: 2024-10-12 22:06:50