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分页

时间: 2024-10-12 22:06:50

ASP.NET中实现Ajax分页的相关文章

ASP.net中的AJAX学习记录六 无刷新的数据编辑(GridView和DetailsView结合实例)(转)

本篇博客是仿照书中实例,实现GridView和DetailsView结合无刷新的数据编辑效果,页面效果:当点击GridView1的行或换页时,都会引发DetailsView1的数据绑定显示至页面,同时当使用DetailsView1编辑.删除.添加时,也会引起GridView1的重新绑定,整体页面实现无刷新. 页面布局: 1.新建AJAX窗口,命名为:"NoRefreshEdit.aspx".要想实现页面无刷新编辑,就必须使用两个Updatepanel. 2.在NoRefreshEdit

asp.ne中使用ajax和controller进行通信问题记录

为了页面显示和后端处理分离,使用了html+ajax+mvc的形式进行处理. 在这其中遇到的问题记录: 1. 在使用ajax向controller请求数据的时候,"get"方法会缓存上一次的请求,导致controller方法不能被debug跟踪到,开始以为是vs出错了,到后来才搞清楚. 解决方法:请求controller路径时加上随机数,或者使用"post"方法. 2. 在使用"POST"方法时,IE11要小心处理,因为ie会出现怎么都执行不了的

ASP.NET中DataList数字分页代码

ASP.NET中DataList数字分页代码 转 荐 好长时间没发东西了, 之前一段时间一直在做别的东西, 最近java实验室要开搞系统哈哈, 重新学习.net 这个分页困扰了我这个菜鸟好久阿, 搞了好久终于找到这段代码, 还是数字分页, 试了成功了~还不会分页的朋友看到这个就偷笑吧~~ 代码转自http://hi.baidu.com/honfei css样式取自吴旗娃aspnetpager 效果: 共1页       首页 上一页  1 2 3 4 5 6 7 8 9 10 ....下一页 末

thinkphp中的ajax分页

thinkphp中用ajax分页和普通的ajax分页的区别在于处理位置的不同,thinkphp是在控制器的方法中处理ajax传的值,然后返回数据.下面是一个点击事件触发后,显示的内容用ajax分页. 下面的示例是同一个类别下,根据点击不同的分类显示出点击的分类的数据. 需要修改的地方用黄色背景标示. 1.ajax处理页面 $(".php_list").click(function(){//点击事件,可以根据自己的要求修改.也可以放在$(document).ready(function(

ASP.NET中JQuery+AJAX调用后台

做订餐系统手机端时,遇到一个问题,实现登录功能时,我要调用后台的方法进行验证和判断.我们应用的是webForm进行开发的,正常情况下只要绑定按钮的方法,前后台对应就可以实现.但是,手机端应用MUI样式之后,就不适用于这种情况了.基于这个问题,我们使用JQuery+Ajax技术,其实MUI中也自带ajax技术. 实现过程: webForm代码: function login() { var name = document.getElementById("username").value;

asp.net 中使用 pagedlist 分页并具有查询功能的实现方法

用pagedlist在项目中做分页已N次了,今天再次用实例来实现一个带查询功能的分页例子. 1.在view代码: <div class="search"> <form method="post" action="/user/index"> <input placeholder="真实姓名" name="realname" /><button class="

django项目中的ajax分页和条件查询。

1,路由 #主页面路由 re_path('article/article_list/', article.article_list,name='article/article_list/'), #分页面路由 re_path('article/list_part/', article.list_part,name='article/list_part/'), 2,前端主页面html #引用的js <script src="/static/jQuery-1.8.2.min.js"&g

laravel5.6中jquery+ajax分页

public function shows(Request $request){ $p=$request->get("page"); $page=empty($p)?1:$p; $count=DB::table("shop")->count(); $length = 4; $num_page = ceil($count/$length); $limit = ($page-1)*$length; $data=DB::select("select

ASP.NET中Ajax的用法

在ASP.NET中应用Ajax的格式如下: 前台代码(用JQuery库) $.ajax({ type: "POST", async: true, url: "../Ajax/ajax.ashx", dataType: "html", data: null success: function (result) { //do successful sth }, error: function (XMLHttpRequest, textStaus, e