Jquery Ajax.ashx 高效分頁(yè)實(shí)現(xiàn)代碼
更新時(shí)間:2009年10月20日 16:52:11 作者:
Jquery ,大家都熟悉的一個(gè)框架,我對(duì)Jquery正在學(xué)習(xí)中,對(duì)其影響最深的當(dāng)屬 它的選擇器之強(qiáng),ajax與服務(wù)器之間的交談
以前的我,用慣了 UpdatePanel UpdateProgress 等控件,甚至到了濫用的程度,只是一味的追求無(wú)刷新,一邊弄這 loading 圖片 提示,這樣貌似更美觀,但是 感覺(jué) 更損失了性能, 而且有時(shí)候還破壞了網(wǎng)站的完整性。
但是學(xué)了Jquery之后,了解了 Jquery.ajax ,Jquery.get 等方法,從而學(xué)會(huì)了使用 webservice 和.ashx 文件,來(lái)與服務(wù)器交互。
這次的Jquery分頁(yè) 是與 .ashx文件配合的。
建立三個(gè).ashx,分別為PreviewHandler.ashx,PageHandler.ashx,NextHandler.ashx,分別來(lái)處理當(dāng)前頁(yè),下一頁(yè),上一頁(yè)的處理。
PageHandler.ashx
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
IQueryable<Answer> answer = xt.Answer.Take(10);
StringBuilder sb = new StringBuilder();
sb.Append("<table border='1' width='900px;'><tr><th>回答內(nèi)容</th><th>回答用戶名</th><th>創(chuàng)建時(shí)間</th></tr>");
foreach (Answer a in answer)
{
sb.Append("<tr><td>" + a.Answer_content + "</td><td>" + a.Answer_UserName + "</td><td 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;
IQueryable<Answer> answer = xt.Answer.Skip(RowCount * (Current - 1)).Take(RowCount);
StringBuilder sb = new StringBuilder();
sb.Append("<table border='1' width='900px;'><tr><th>回答內(nèi)容</th><th>回答用戶名</th><th>創(chuàng)建時(shí)間</th></tr>");
foreach (Answer a in answer)
{
sb.Append("<tr><td>" + a.Answer_content + "</td><td>" + a.Answer_UserName + "</td><td>" + 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;
IQueryable<Answer> answer = xt.Answer.Skip(RowCount * (Current - 1)).Take(RowCount);
StringBuilder sb = new StringBuilder();
sb.Append("<table border='1' width='900px;'><tr><th>回答內(nèi)容</th><th>回答用戶名</th><th>創(chuàng)建時(shí)間</th></tr>");
foreach (Answer a in answer)
{
sb.Append("<tr><td>" + a.Answer_content + "</td><td>" + a.Answer_UserName + "</td><td>" + a.Answer_Creatime + "</td></tr>");
}
sb.Append("</table>");
context.Response.Write(sb);
}
三個(gè)文件其實(shí)代碼大多類(lèi)似,然后通過(guò)html或者aspx文件來(lái)調(diào)用,用Jquery.get()
<div id="lab">
<input type="button" onclick="Init();" value="初始化數(shù)據(jù)" />
<div id="content" style="width:100%">
</div>
<div id="PagePanel">
<div style="color:Red;" id="PageInfo"></div>
<a href="#" onclick="Preview();">上一頁(yè)</a>
<a href="#" onclick="Next()">下一頁(yè)</a>
</div>
<!--用存儲(chǔ)當(dāng)前頁(yè)碼 -->
<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="當(dāng)前第1頁(yè)";
});
}
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="當(dāng)前第"+pre+"頁(yè)";
});
}
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="當(dāng)前第"+next+"頁(yè)";
});
}
調(diào)用.ashx文件生成的數(shù)據(jù)即可,點(diǎn)擊下一頁(yè),將NextHandler.ashx文件的內(nèi)容覆蓋PageHandler.ashx文件內(nèi)容。
結(jié)果如圖:

有待解決的問(wèn)題是,對(duì)這些行進(jìn)行編輯,我在.ashx文件加了 一個(gè) <tr onclick='del();'></tr>
而且在.aspx文件上也寫(xiě)了del 方法,但是會(huì)報(bào)錯(cuò), object expected error ,這個(gè)錯(cuò)誤,應(yīng)該是找不到 del方法吧,他們的生成時(shí)間,不懂,還未解決,
誰(shuí)能解決可以告訴我。。。
但是學(xué)了Jquery之后,了解了 Jquery.ajax ,Jquery.get 等方法,從而學(xué)會(huì)了使用 webservice 和.ashx 文件,來(lái)與服務(wù)器交互。
這次的Jquery分頁(yè) 是與 .ashx文件配合的。
建立三個(gè).ashx,分別為PreviewHandler.ashx,PageHandler.ashx,NextHandler.ashx,分別來(lái)處理當(dāng)前頁(yè),下一頁(yè),上一頁(yè)的處理。
PageHandler.ashx
復(fù)制代碼 代碼如下:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
IQueryable<Answer> answer = xt.Answer.Take(10);
StringBuilder sb = new StringBuilder();
sb.Append("<table border='1' width='900px;'><tr><th>回答內(nèi)容</th><th>回答用戶名</th><th>創(chuàng)建時(shí)間</th></tr>");
foreach (Answer a in answer)
{
sb.Append("<tr><td>" + a.Answer_content + "</td><td>" + a.Answer_UserName + "</td><td onclick='javascript:alert("+"aa"+")'>" + a.Answer_Creatime + "</td></tr>");
}
sb.Append("</table>");
context.Response.Write(sb);
}
NextHandler.ashx
復(fù)制代碼 代碼如下:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
int RowCount = 10;
int Current = Convert.ToInt32(context.Request.Params["index"]) + 1;
IQueryable<Answer> answer = xt.Answer.Skip(RowCount * (Current - 1)).Take(RowCount);
StringBuilder sb = new StringBuilder();
sb.Append("<table border='1' width='900px;'><tr><th>回答內(nèi)容</th><th>回答用戶名</th><th>創(chuàng)建時(shí)間</th></tr>");
foreach (Answer a in answer)
{
sb.Append("<tr><td>" + a.Answer_content + "</td><td>" + a.Answer_UserName + "</td><td>" + a.Answer_Creatime + "</td></tr>");
}
sb.Append("</table>");
context.Response.Write(sb);
}
PreviewHandler.ashx
復(fù)制代碼 代碼如下:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
int RowCount = 10;
int Current = Convert.ToInt32(context.Request.Params["index"]) - 1;
IQueryable<Answer> answer = xt.Answer.Skip(RowCount * (Current - 1)).Take(RowCount);
StringBuilder sb = new StringBuilder();
sb.Append("<table border='1' width='900px;'><tr><th>回答內(nèi)容</th><th>回答用戶名</th><th>創(chuàng)建時(shí)間</th></tr>");
foreach (Answer a in answer)
{
sb.Append("<tr><td>" + a.Answer_content + "</td><td>" + a.Answer_UserName + "</td><td>" + a.Answer_Creatime + "</td></tr>");
}
sb.Append("</table>");
context.Response.Write(sb);
}
三個(gè)文件其實(shí)代碼大多類(lèi)似,然后通過(guò)html或者aspx文件來(lái)調(diào)用,用Jquery.get()
復(fù)制代碼 代碼如下:
<div id="lab">
<input type="button" onclick="Init();" value="初始化數(shù)據(jù)" />
<div id="content" style="width:100%">
</div>
<div id="PagePanel">
<div style="color:Red;" id="PageInfo"></div>
<a href="#" onclick="Preview();">上一頁(yè)</a>
<a href="#" onclick="Next()">下一頁(yè)</a>
</div>
<!--用存儲(chǔ)當(dāng)前頁(yè)碼 -->
<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="當(dāng)前第1頁(yè)";
});
}
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="當(dāng)前第"+pre+"頁(yè)";
});
}
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="當(dāng)前第"+next+"頁(yè)";
});
}
調(diào)用.ashx文件生成的數(shù)據(jù)即可,點(diǎn)擊下一頁(yè),將NextHandler.ashx文件的內(nèi)容覆蓋PageHandler.ashx文件內(nèi)容。
結(jié)果如圖:

有待解決的問(wèn)題是,對(duì)這些行進(jìn)行編輯,我在.ashx文件加了 一個(gè) <tr onclick='del();'></tr>
而且在.aspx文件上也寫(xiě)了del 方法,但是會(huì)報(bào)錯(cuò), object expected error ,這個(gè)錯(cuò)誤,應(yīng)該是找不到 del方法吧,他們的生成時(shí)間,不懂,還未解決,
誰(shuí)能解決可以告訴我。。。
相關(guān)文章
jQuery實(shí)現(xiàn)點(diǎn)擊自身以外區(qū)域關(guān)閉彈出層功能完整示例【改進(jìn)版】
這篇文章主要介紹了jQuery實(shí)現(xiàn)點(diǎn)擊自身以外區(qū)域關(guān)閉彈出層功能,結(jié)合具體實(shí)例形式分析了jQuery事件響應(yīng)及頁(yè)面元素屬性動(dòng)態(tài)操作實(shí)現(xiàn)彈出層打開(kāi)與關(guān)閉相關(guān)操作技巧,需要的朋友可以參考下2018-07-07jquery img src 獲取實(shí)現(xiàn)代碼
利用jquery 取得IMG src的問(wèn)題,有需要的朋友可以參考下。2009-05-05Jquery 分頁(yè)插件之Jquery Pagination
實(shí)用jQuery分頁(yè)特效插件jquery.pagination.js,基于jQuery實(shí)現(xiàn),本文給大家分享jquery分頁(yè)插件之jquery pagination,需要的朋友可以參考下2015-08-08jquery實(shí)現(xiàn)鍵盤(pán)左右翻頁(yè)特效
jQuery實(shí)現(xiàn)網(wǎng)頁(yè)上鍵盤(pán)左右方向鍵翻頁(yè)代碼,我們?cè)诤芏嘈≌f(shuō)網(wǎng)站經(jīng)常看到這樣的效果,這樣可以給網(wǎng)站提高用戶體驗(yàn),方便訪客翻頁(yè)使用,從而大大提高了網(wǎng)站PV2015-04-04利用jqgrid實(shí)現(xiàn)上移下移單元格功能
這篇文章主要給大家介紹了關(guān)于如何利用jqgrid實(shí)現(xiàn)上移下移單元格功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11EasyUI 中combotree 默認(rèn)不能選擇父節(jié)點(diǎn)的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇EasyUI 中combotree 默認(rèn)不能選擇父節(jié)點(diǎn)的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11jQuery基于排序功能實(shí)現(xiàn)上移、下移的方法
這篇文章主要介紹了jQuery基于排序功能實(shí)現(xiàn)上移、下移的方法,結(jié)合實(shí)例形式分析了jQuery使用ajax與后臺(tái)php交互實(shí)現(xiàn)元素的排序,上移、下移功能相關(guān)操作技巧2016-11-11