Jquery Ajax.ashx 高效分页实现代码

2016-02-19 15:06 34 1 收藏

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的Jquery Ajax.ashx 高效分页实现代码懂设计的网友们快点来了解吧!

【 tulaoshi.com - Web开发 】

以前的我,用惯了 UpdatePanel UpdateProgress 等控件,甚至到了滥用的程度,只是一味的追求无刷新,一边弄这 loading 图片 提示,这样貌似更美观,但是 感觉 更损失了性能, 而且有时候还破坏了网站的完整性。

但是学了Jquery之后,了解了 Jquery.ajax ,Jquery.get 等方法,从而学会了使用 webservice 和.ashx 文件,来与服务器交互。
这次的Jquery分页 是与 .ashx文件配合的。
建立三个.ashx,分别为PreviewHandler.ashx,PageHandler.ashx,NextHandler.ashx,分别来处理当前页,下一页,上一页的处理。
PageHandler.ashx
代码如下:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
IQueryableAnswer answer = xt.Answer.Take(10);
StringBuilder sb = new StringBuilder();
sb.Append("table border='1' width='900px;'trth回答内容/thth回答用户名/thth创建时间/th/tr");
foreach (Answer a in answer)
{
sb.Append("trtd" + a.Answer_content + "/tdtd" + a.Answer_UserName + "/tdtd onclick='javascript:alert("+"aa"+")'" + a.Answer_Creatime + "/td/tr");
}
sb.Append("/table");
context.Response.Write(sb);
}

NextHandler.ashx
代码如下:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
int RowCount = 10;
int Current = Convert.ToInt32(context.Request.Params["index"]) + 1;
IQueryableAnswer answer = xt.Answer.Skip(RowCount * (Current - 1)).Take(RowCount);
StringBuilder sb = new StringBuilder();
sb.Append("table border='1' width='900px;'trth回答内容/thth回答用户名/thth创建时间/th/tr");
foreach (Answer a in answer)
{
sb.Append("trtd" + a.Answer_content + "/tdtd" + a.Answer_UserName + "/tdtd" + a.Answer_Creatime + "/td/tr");
}
sb.Append("/table");
context.Response.Write(sb);
}

PreviewHandler.ashx
代码如下:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
int RowCount = 10;
int Current = Convert.ToInt32(context.Request.Params["index"]) - 1;
IQueryableAnswer answer = xt.Answer.Skip(RowCount * (Current - 1)).Take(RowCount);
StringBuilder sb = new StringBuilder();
sb.Append("table border='1' width='900px;'trth回答内容/thth回答用户名/thth创建时间/th/tr");
foreach (Answer a in answer)
{
sb.Append("trtd" + a.Answer_content + "/tdtd" + a.Answer_UserName + "/tdtd" + a.Answer_Creatime + "/td/tr");
}
sb.Append("/table");
context.Response.Write(sb);
}

三个文件其实代码大多类似,然后通过html或者aspx文件来调用,用Jquery.get()
代码如下:
div id="lab"
input type="button" onclick="Init();" value="初始化数据" /
div id="content" style="width:100%"
/div
div id="PagePanel"
div style="color:Red;" id="PageInfo"/div
a href="#" onclick="Preview();"上一页/a
a href="#" onclick="Next()"下一页/a
/div
!--用存储当前页码 --
input type="hidden" class="currIndex" /
/div
var Init=function(){
$.get("PageHandler.ashx",function(data){
document.getElementById('content').innerHTML=data;
$('.currIndex').attr('value',"1");
document.getElementById("PageInfo").innerHTML="当前第1页";
});
}
var Preview=function(){
var current=$('.currIndex').attr('value');
var pre=Number(current)-1;
$.get("PreviewHandler.ashx",{index:current},function(data){
document.getElementById('content').innerHTML=data;
$('.currIndex').attr('value',pre);
document.getElementById("PageInfo").innerHTML="当前第"+pre+"页";
});
}
var Next=function(){
var current=$('.currIndex').attr('value');
var next=Number(current)+1;
$.get("NextHandler.ashx",{index:current},function(data){
document.getElementById('content').innerHTML=data;
$('.currIndex').attr('value',next);
document.getElementById("PageInfo").innerHTML="当前第"+next+"页";
});
}

调用.ashx文件生成的数据即可,点击下一页,将NextHandler.ashx文件的内容覆盖PageHandler.ashx文件内容。
结果如图:

有待解决的问题是,对这些行进行编辑,我在.ashx文件加了 一个 tr onclick='del();'/tr
而且在.aspx文件上也写了del 方法,但是会报错, object expected error ,这个错误,应该是找不到 del方法吧,他们的生成时间,不懂,还未解决,
谁能解决可以告诉我。。。

来源:http://www.tulaoshi.com/n/20160219/1608844.html

延伸阅读
标签: Web开发
代码如下: var boardDiv = "div style='background:white;width:100%;height:100%;z-index:999;position:absolute;top:0;margin-top:100px;'加载中...\/div"; $(window).load(function(){ //window.alert("ok"); $(document.body).append(boardDiv); });
标签: Web开发
代码如下: script type="text/javascript" src="js/jquery.min.js"/script script type="text/javascript" $(function(){ $("li").hover(function(){ $(this).addClass("ho"); }, function(){ $(this).removeClass("ho"); }); $("li").click(function(){ $(this).removeClass("ho").addClass("xiaoshi").siblings().removeClass("x...
标签: Web开发
兼容: opera 9.6 + chrome 2.0 + FF 3 + IE 6 效果:一边输入一边实现验证   环境:ruby 1.8.6 + rails 2.1.0 + windows 核心代码: html: 浏览器禁用javascript时显示提示信息: 代码如下: noscript div style="color:red"您的浏览器不支持javascript,部分功能无法使用/div /noscript 当浏览器禁用JS后,提交按钮不可用,实现客户...
标签: Web开发
其中有mask()和unmask()这两个方法,这两个方法在指定的元素上添加一个遮罩层和一个提示消息实现,增加客户体验。由于最近做项目的时候,发现有时为了使用这一两个方法需要引入一个比较“庞大”的Extjs进来,觉得有点不划算,于是自己用jquery实现了一个比较简单mask、unmask方法来实现该效果。大家知道jquery是一个优秀的javascript框架,不但...
标签: Web开发
打包下载 查了一下jq的官方插件编写文档( http://docs.jquery.com/Plugins/Authoring )以及文档中推荐的Mike Alsup写的一篇 A Plugin Development Pattern 。英语不是很好,但还是努力看下来(既学习到知识又能练习英语,何乐不为),照猫画虎的写了一个处女作——tabBox。 顾名思义,这个插件就是方便的产生具有tab选项卡功能“盒子...

经验教程

154

收藏

87
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部