以前的我,用惯了 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;
iqueryable answer = xt.answer.take(10);
stringbuilder sb = new stringbuilder();
sb.append(回答内容回答用户名创建时间
);
foreach (answer a in answer)
{
sb.append( + a.answer_content + + a.answer_username + + a.answer_creatime +
);
}
sb.append(
);
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;
iqueryable answer = xt.answer.skip(rowcount * (current - 1)).take(rowcount);
stringbuilder sb = new stringbuilder();
sb.append(回答内容回答用户名创建时间
);
foreach (answer a in answer)
{
sb.append( + a.answer_content + + a.answer_username + + a.answer_creatime +
);
}
sb.append(
);
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;
iqueryable answer = xt.answer.skip(rowcount * (current - 1)).take(rowcount);
stringbuilder sb = new stringbuilder();
sb.append(回答内容回答用户名创建时间
);
foreach (answer a in answer)
{
sb.append( + a.answer_content + + a.answer_username + + a.answer_creatime +
);
}
sb.append(
);
context.response.write(sb);
}
三个文件其实代码大多类似,然后通过html或者aspx文件来调用,用jquery.get()
复制代码 代码如下:
上一页
下一页
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文件加了 一个
而且在.aspx文件上也写了del 方法,但是会报错, object expected error ,这个错误,应该是找不到 del方法吧,他们的生成时间,不懂,还未解决,
谁能解决可以告诉我。。。
