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‘ 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 + "条记录&nbsp;&nbsp;共<span id=‘count‘>" + pageCount + "</span>页&nbsp;&nbsp;&nbsp;&nbsp;";
29                     htmlStr += "<a href=‘javascript:void‘ onclick=‘GoToPrePage()‘ id=‘aPrePage‘ >前一页</a>&nbsp;&nbsp; ";
30                     htmlStr += "<a href=‘javascript:void‘ onclick=‘GoToNextPage()‘ id=‘aNextPage‘>后一页</a>&nbsp;&nbsp; ";
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分页

ASP.NET中实现Ajax分页,布布扣,bubuko.com

ASP.NET中实现Ajax分页

上一篇:Android 模仿QQ空间风格的 UI(转)


下一篇:IOS编程 图片缓存模块设计