手机版

Asp.net jquery .ashx文件实现分页思路

时间:2021-11-22 来源:互联网 编辑:宝哥软件园 浏览:

今天看到一个由写的程序代码。java好友直接请求页面上的数据列表。是实现选择客户联系人后,无需刷新弹出div即可列出其他联系人列表的功能。我突然想到,既然可以请求联系人列表,而且没有刷新。拿一个复杂的数据列表怎么样?后来想到了数据分页。现在我使用自己编写的分页控件。但是有时候效率不是很高。它使用用户控制存储过程分页处理类来实现分页。但是,难免会遇到耳目一新的问题。即使分页很快,只要刷了总感觉很不舒服。还要重新编译页面,在服务器端处理ViewState。和其他性能损失。从。ashx可以省略页面编译的过程。将分页处理类移到客户端,应该会大大提高性能。还没有刷新,一定很爽。想到就做。我的想法是:在。ashx程序,写一个程序得到不同的页码。在页面布局好的前提下,留数据区div。然后请求。页面上的ashx程序生成下一页的html代码。覆盖div.innerHTMl.首先是页面,因为是练习思路,所以页面真的很简单。参照jquery.js复制的代码如下: div id=' lab '输入id=' button1 '类型=' button '值='初始化数据' onclick=' Init();'/div id=' Content ' style=' width : 100% '/div id=' PagePanel ' style=' margin-left :20 px ' label id=' pageInfo '/labela href=' # ' onclick=' InitUp()' Last/a href=' # ' onclick=' init next()' next/a/div输入类型=' hidden '值=' 0 ' id=' currpageindex '/div,然后编写一个. js文件实现对页面的分页控制当前页码信息已存储在显示页面上。输入类型=“隐藏”。引用js文件后,就可以使用了。哈哈,很顺利。复制代码如下: //JScript文件functioninit () {$。get ('handler.ashx ',function(table tr){ document . getelementbyid(' content ')。innerhtml=tablestrdocument . getelementbyid(' currPageIndex ')。值=' 1 ';});}函数InitNext(){ var currIndex=document . getelementbyid(' currPageIndex ')。价值;var next index=Number(currIndex)1;$.get('NextHandler.ashx ',{index:currIndex},function(table tr){ document . getelementbyid(' Content ')。innerHTML=tablestrdocument . getelementbyid(' page info ')。innertext=“下一个索引”的当前页面;document . getelementbyid(' currPageIndex ')。value=nextIndex});}函数InitUp(){ var currIndex=document . getelementbyid(' currPageIndex ')。价值;var next index=Number(currIndex)-1;$.get('PreviousHandler.ashx ',{index:currIndex},function(table tr){ document . getelementbyid(' Content ')。innerHTML=tablestrdocument . getelementbyid(' page info ')。innertext=“下一个索引”的当前页面;document . getelementbyid(' currPageIndex ')。value=nextIndex});}参考显示页面,复制代码如下: script type=' text/JavaScript ' src=' http :3358 www . cn blogs.com/media/script/jquery . js '/script script src=' http 3360 jscript . js ' type=' text/JavaScript '/script完成!剩下的就是服务器了。这很简单。我们生在c#代码里,直接喊.1.第一页的初始化数据。

.复制代码代码如下: %@使用系统的网络处理程序语言="c# "类="处理程序";使用系统网络.使用系统。数据;使用系统。文字;公共类处理程序: IHttpHandler { public void process request(HttpContext context){ context .响应。内容类型='文本/纯文本;数据集ds=HebHX .DBUtility。数据库帮助查询('从客户信息中选择前20名cust_code、cust_name、cust_addr、bank_name、bank _ account’;StringBuilder TB=new StringBuilder(' table class=' date grid ' trth style=' width :130 px '税号/thth style='width:150px '企业名称/thth style='width:200px '企业地址/thth style='width:150px '银行/thth style='width:150px '银行账号/thtr ');for(int I=0;我拒绝了。表[0].行。计数;i ) { tb .追加(' tr ');for(int j=0;j ds .表[0].列。计数;j ) { tb .追加(' TD类=' Item ' ');肺结核。追加(ds .表[0]。行[i][j].ToString());肺结核。追加('/TD ');} tb .追加('/tr ');} tb .追加('/table ');语境。回应。写(tb .ToString());} public bool IsReuse { get { return false;} } } 2、点击下一页用到的ashx .文件。复制代码代码如下: %@使用系统的网络处理程序语言="c# "类="下一个处理程序";使用系统网络.使用系统。数据;使用系统。文字;公共类下一个处理程序: IHttpHandler { public void process request(HttpContext context){ context .响应。内容类型='文本/纯文本;int page rows=20 int page index=Convert .ToInt32(上下文。请求参数['索引'])1;数据集ds=HebHX .DBUtility。dbhelpersql。查询('选择顶部'页面行.ToString() ' cust_code,cust_name,cust_addr,bank_name,来自customer_info的bank_account,其中cust_id(选择max(t.cust_id)来自(选择top '(页面显示*页面索引)).“客户信息”中的cust _ id order by cust _ id)t)order by cust _ id ';StringBuilder TB=new StringBuilder(' table class=' date grid ' trth style=' width :130 px '税号/thth style='width:150px '企业名称/thth style='width:200px '企业地址/thth style='width:150px '银行/thth style='width:150px '银行账号/thtr ');for(int I=0;我拒绝了。表[0].行。计数;i ) { tb .追加(' tr ');for(int j=0;j ds .表[0].列。计数;j ) { tb .追加(' TD类=' Item ' ');肺结核。追加(ds .表[0]。行[i][j].ToString());肺结核。追加('/TD ');} tb .追加('/tr ');} tb .追加('/table ');语境。回应。写(tb .ToString());} public bool IsReuse { get { return false;} } } 3、点击前一页用到的ashx .文件。有思路了这个就更简单了,直接就是复制了。复制代码代码如下: %@网络处理程序语言='C# '类='UpHandler' %使用系统;使用系统网络.使用系统。数据;使用系统。文字;公共类UpHandler : IHttpHandler { public void process request(HttpContext context){ context .响应。内容类型='文本/纯文本;int page rows=20 int page index=Convert .ToInt32(上下文。请求参数['索引'])-1;数据集ds=HebHX .DBUtility。dbhelpersql。查询('选择顶部'页面行.ToString() ' cust_code,cust_name,cust_addr,bank_name,来自customer_info的bank_account,其中cust_id(选择max(t.cust_id)来自(选择top '(页面显示*页面索引)).“客户信息”中的cust _ id order by cust _ id)t)order by cust _ id ';StringBuilder TB=new StringBuilder(' table class=' date grid ' trth style=' width :130 px '税号/thth style='width:150px '企业名称/thth style='width:200px '企业地址/thth style='width:150px '银行/thth style='width:150px '银行账号/thtr ');for(int I=0;我拒绝了。表[0].行。计数;i ) { tb .追加(' tr ');for(int j=0;j ds .表[0].列。计数;j ) { tb .追加(' TD类=' Item ' ');肺结核。追加(ds .表[0]。行[i][j].ToString());肺结核。追加('/TD ');} tb .追加('/tr ');} tb .追加('/table ');语境。回应。写(tb .ToString());} public bool IsReuse { get { return false;} } } 完成!直接测试.效果果然很不错,要知道我们的数据库的数据量大概在10万级别以上。基本上,我感觉不到任何延迟。没有刷新真的很酷。如果我使用分页存储过程,它应该得到改进。效果如图,顺便画一幅抽象画。哈哈的笑声.顺便享受一下。

最后,我有些疑惑。ajax在。网一样吗?在使用ajax之前,我使用了一些服务器控件,但是我并没有真正练习客户端的用法。但是我一直认为ajax应该和我现在实现它的方式相似。稍后了解更多信息。那些精通ajax的人可以在客户端就ajax的经典和实用知识给出一些建议。先谢谢你。

版权声明:Asp.net jquery .ashx文件实现分页思路是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。