在页面中指定一个div容器来接收动态生成的分页数据:

 <div id="div_menu">
</div>

使用jQuery来请求并处理Json格式数据:

 //定义页码与页容量
var pageIndex = 1;
var pageSize = 15;
var pageCount = 0;
var recordCount = 0;
AjaxGetData(pageIndex, pageSize);
//Ajax获取数据
function AjaxGetData(index, size) {
$.ajax({
url: "ProcessData.aspx",
type: "Get",
data: "pageindex=" + index + "&pagesize=" + size + "&rnd=" + new Date(),
dataType: "json",
success: function (data) {
var htmlStr = "";
htmlStr += "<table width=100%>";
for (var i = 0; i < data.Exercise_object.length; i++) {
htmlStr += "<tr><td class='rr' onmouseover='javascript:onOver(this)' onmouseout='javascript:onOut(this)'onclick='javascript:onDown(this);'>";
htmlStr += "<a href='voucher/Exercise_Detail.aspx?id=" + data.Exercise_object[i]._question_id + "' class='cpx12huei' target='content'>";
htmlStr += "第" + data.Exercise_object[i]._row_number + "题";
htmlStr += "</a>";
htmlStr += "</td></tr>";
}
htmlStr += "<tr style='text-align:center;'>";
htmlStr += "<td>";
recordCount = Number(data.Count);
pageCount = Math.ceil(recordCount / pageSize);
htmlStr += "共" + recordCount + "条记录&nbsp;&nbsp;共<span id='count'>" + pageCount + "</span>页&nbsp;&nbsp;&nbsp;&nbsp;";
htmlStr += "<a href='javascript:void' onclick='GoToPrePage()' id='aPrePage' >前一页</a>&nbsp;&nbsp; ";
htmlStr += "<a href='javascript:void' onclick='GoToNextPage()' id='aNextPage'>后一页</a>&nbsp;&nbsp; ";
htmlStr += "</td>";
htmlStr += "</tr>";
htmlStr += "</table>";
$("#div_menu").html(htmlStr);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest);
alert(textStatus);
alert(errorThrown);
}
});
}
//前一页
function GoToPrePage() {
pageIndex -= 1;
if (pageIndex < 1) {
pageIndex = 1;
return;
}
AjaxGetData(pageIndex, pageSize);
}
//后一页
function GoToNextPage() {
pageIndex += 1;
if (pageIndex > pageCount) {
pageIndex = pageCount;
return;
}
AjaxGetData(pageIndex, pageSize);
}

新建一个一般处理程序,来处理Ajax的异步请求:

 private readonly BLL.D_Accounting_Entry_Exercise bll = new BLL.D_Accounting_Entry_Exercise();
private string _action = "";
protected void Page_Load(object sender, EventArgs e)
{
Int32 pageIndex = Int32.MinValue;
Int32 pageSize = Int32.MinValue; if (Request["action"] != null)
this._action = Request["action"]; JavaScriptSerializer jss = new JavaScriptSerializer();
if (Request["pageindex"] != null)
{
pageIndex = Int32.Parse(Request["pageindex"].ToString());
pageSize = Request["pagesize"] != null ? Int32.Parse(Request["pagesize"].ToString()) : ; //处理接收到的数据
int start = ;
int end = ; if (this._action == "")
{
int recordCount = getAllCount();
int pageCount = (int)Math.Ceiling(((double)recordCount) / ((double)pageSize));
if (pageIndex > pageCount)
{
pageIndex = pageCount;
}
else if (pageIndex < )
pageIndex = ;
start = (pageIndex - ) * pageSize + ;
end = pageIndex * pageSize; IList<Exercise> exerciseLists = new List<Exercise>();
Exercise exercise = null;
DataSet set = GetDataFromDB(start, end);
int id = ;
for (int i = ; i < set.Tables[].Rows.Count; i++)
{
//将第一行记录的ID存入Session
Session["first_id"] = set.Tables[].Rows[]["question_id"];
exercise = new Exercise();
id = Convert.ToInt32(set.Tables[].Rows[i]["question_id"].ToString());
exercise._question_id = id;
exercise._question_content = set.Tables[].Rows[i]["question_content"].ToString();
exercise._question_answer = set.Tables[].Rows[i]["question_answer"].ToString();
exercise._question_analyze = set.Tables[].Rows[i]["question_analyze"].ToString();
exercise._question_status = Convert.ToInt32(set.Tables[].Rows[i]["question_status"].ToString());
exercise._user_id = Convert.ToInt32(set.Tables[].Rows[i]["user_id"].ToString());
exercise._add_time = Convert.ToDateTime(set.Tables[].Rows[i]["add_time"].ToString());
exercise._row_number = Convert.ToInt32(set.Tables[].Rows[i]["Row"].ToString());
exerciseLists.Add(exercise);
}
if (exerciseLists.Count > )
{
Response.Write("{\"Count\":" + recordCount + ",\"Exercise_object\":" + jss.Serialize(exerciseLists) + "}");
}
else
{
Response.Write("{\"Count\":0,\"Exercise_object\":null}");
}
Response.End();
}
else if (this._action == "")
{
string classID = Request["classid"];
string opSign = Request["opsign"];
int recordCount = GetYSPXCount(opSign, classID);
int pageCount = (int)Math.Ceiling(((double)recordCount) / ((double)pageSize));
if (pageIndex > pageCount)
{
pageIndex = pageCount;
}
else if (pageIndex < )
pageIndex = ;
start = (pageIndex - ) * pageSize + ;
end = pageIndex * pageSize; IList<operationModel> operList = new List<operationModel>();
operationModel model = null;
DataSet set = GetYSPXRecords(start.ToString(), end.ToString(), classID, opSign);
for (int i = ; i < set.Tables[].Rows.Count; i++)
{
model = new operationModel();
model.OD_ID = int.Parse(set.Tables[].Rows[i]["od_id"].ToString());
model.OD_TITLE = set.Tables[].Rows[i]["od_title"].ToString();
model._row_number = Convert.ToInt32(set.Tables[].Rows[i]["Row"].ToString());
operList.Add(model);
}
if (operList.Count > )
{
Response.Write("{\"Count\":" + recordCount + ",\"operationModel\":" + jss.Serialize(operList) + "}");
}
else
{
Response.Write("{\"Count\":0,\"operationModel\":null}");
}
Response.End();
}
}
} /// <summary>
/// 从数据库中获取总启用记录的条数
/// </summary>
/// <returns></returns>
private int getAllCount()
{
return bll.GetRecordCount("question_status=1");
} /// <summary>
/// 从数据库中获取数据
/// </summary>
/// <param name="pageIndex">开始</param>
/// <param name="pageSize">结束</param>
/// <returns>数据集对象</returns>
private DataSet GetDataFromDB(int pageIndex, int pageSize)
{
DataSet set = bll.GetListByPage("", "", pageIndex, pageSize);
return set;
}

实现效果:

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

  1. asp.mvc中的vue分页实例,分页组件无法重置reload,解决点击查询按钮后,分页不刷新的问题

    刚刚接触Vue.js,现在需要做一个查询功能,并且进行服务端分页.主要思路是在页面中注册一个分页组件,然后进行调用.代码如下 1.引用vue.js,具体去网上下载 2.在html的body中添加如下代 ...

  2. ASP.NET中无刷新分页

    上次介绍了我们代码写的刷新分页,这次就来说说无刷新分页. 这次我们是在上次的基础上改动了一些,我们都知道想要无刷新,就需要Ajax,在我们的ASP.NET中AJax是和一般处理程序配合着用的. 无刷新 ...

  3. thinkphp中的ajax分页

    thinkphp中用ajax分页和普通的ajax分页的区别在于处理位置的不同,thinkphp是在控制器的方法中处理ajax传的值,然后返回数据.下面是一个点击事件触发后,显示的内容用ajax分页. ...

  4. ASP.Net 中操作Ajax

    有时候,越深入去了解一个点,越发觉得自己无知,而之前当自己晓得一两个片面的点还洋洋自得,殊不知,这是多么讽刺,JQuery中有很多优势,比如异步提交值,部分刷新,给用户很好的体验感.目前为止,大部分项 ...

  5. php--yii框架中的ajax分页与yii框架自带的分页

    要想使用Yii分页类 第一步:在控制器层加载分页类 use yii\data\Pagination; 第二步: 使用model层查询数据,并用分分页,限制每页的显示条数 $data = Zhao::f ...

  6. 在ASP.MVC中使用Ajax

    Asp.net MVC 抛弃了Asp.net WebForm那种高度封装的控件,让我们跟底层的HTML有了更多的亲近.可以更自由.更灵活的去控制HTML的结构.样式和行为.Asp.net MVC可以更 ...

  7. Asp.net中的ajax回调模式(ICallbackEventHandler)

    客户端回调本质上就是指通过前端的客户端脚本向服务器端传递相应的数据参数,服务器端再以接受到的参数进行查询和处理,最后将结果回传到客户端进行显示.asp.net 2.0提供了实现无刷新回调的接口ICal ...

  8. 在asp.net中使用ajax记录

    一.问题描述 ajax在mvc中使用频繁,比如cms中的评论功能,但由于涉及到前后端开发,日久容易忘,在此做下记录. 二.内容 控制器中代码示例: /// <summary> /// 在文 ...

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

    用pagedlist在项目中做分页已N次了,今天再次用实例来实现一个带查询功能的分页例子. 1.在view代码: @using PagedList.Mvc@model BGZS.Models.User ...

随机推荐

  1. 解决PL/SQL Dev连接Oracle弹出空白提示框

    第一次安装Oracle,装在虚拟机中,用PL/SQL Dev连接远程数据库的时候老是弹出空白提示框,网上找了很久,解决方法也很多,可是就是没法解决我这种情况的. 没办法,只能自己研究,经过大概一天时间 ...

  2. C# TextBox控件 显示大量数据

    串口通信:在使用TextBox空间显示数据时,因为要显示大量的接收到的数据,当数据量大且快速(串口1ms发送一条数据)时,使用+=的方式仍然会造成界面的卡顿(已使用多线程处理),但使用AppendTe ...

  3. java线层的使用

    class Do3 { public static void main(String[] args) { XC d1=new XC("小王"); XC d2=new XC(&quo ...

  4. uva12486 Space Elevator(数位dp)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 题目链接:https://uva.onlinejudge.org/index.ph ...

  5. fiddler使用之坑

    今天一上午都在搞fiddler,之前可以抓到浏览器的请求,今天突然不行了,弄得我花一上午时间去设置浏览器代理的事情,遇到各种各样的问题,现将解决办法记录如下: 1.原来fiddler安装在E盘中,安装 ...

  6. android4.0默认界面旋转180

    不巧新拿的android4.0默认启动画面和正常显示旋转了180度,即为倒立的.原来是屏输出为倒的,查找得知可以做旋转: 步骤: 一:先把这个加上 然后加上属性ro.sf.hwrotation = 1 ...

  7. Qt浅谈之二十七进程间通信之QtDBus

    一.简介 DBus的出现,使得Linux进程间通信更加便捷,不仅可以和用户空间应用程序进行通信,而且还可以和内核的程序进行通信,DBus使得Linux变得更加智能,更加具有交互性.        DB ...

  8. 开机启动tomcat

    windows: 成功之后在dos窗口键入 service.bat install Tomcat 输完然后按Enter键,出现如下窗口,便成功了. 进入windows服务管理,设成是自动的. #chk ...

  9. using 1.7 requires using android build tools version 19 or later

    这意思大概是adt用了1.7,abt(android build tools)就要用19或更高,可是abt在哪设置呢,原来是在sdk manager中 之前我已安装的最高的abt是17,然后~~~,F ...

  10. FutureTask 测试用例

    package currentTest.BlockingQueue; import java.util.concurrent.Callable; import java.util.concurrent ...