本文实例讲述了asp.net+ajax简单分页实现方法。分享给大家供大家参考,具体如下:
这里涉及两个.aspx文件,一个叫Default.aspx,一个叫AjaxOperations.aspx,第一个用来显示一些测试数据,后一个用来对分页进行处理。js文件夹下面还有一个testJs.js的文件,它就是ajax操作的核心部分。不错,code is cheap。看代码:
/*testJs.js*/ // 此函数等价于document.getElementById /document.all function $(s) { if (document.getElementById) { return eval(\'document.getElementById(\"\' + s + \'\")\'); } else { return eval(\'document.all.\' + s); } } // 创建 XMLHttpRequest对象,以发送ajax请求 function createXMLHTTP() { var xmlHttp = false; var arrSignatures = [\"MSXML2.XMLHTTP.5.0\", \"MSXML2.XMLHTTP.4.0\", \"MSXML2.XMLHTTP.3.0\", \"MSXML2.XMLHTTP\", \"Microsoft.XMLHTTP\"]; for (var i = 0; i < arrSignatures.length; i++) { try { xmlHttp = new ActiveXObject(arrSignatures[i]); return xmlHttp; } catch (oError) { xmlHttp = false; //ignore } } // throw new Error(\"MSXML is not installed on your system.\"); if (!xmlHttp && typeof XMLHttpRequest != \'undefined\') { xmlHttp = new XMLHttpRequest(); } return xmlHttp; } //window.onload = showPages(1, 10, 100); //cP目前页码, tP总页数 ,tN总记录数 function showPages(cP, tP, tN) { //处理页码大于总页数 if (cP >= tP) { cP = tP; } //处理页码小于1 if (cP < 1) { cP = 1; } var trPg = $(\"trPager\"); var newCellOne = trPg.insertCell(0); newCellOne.width = \"20%\"; var newCellTwo = trPg.insertCell(1); newCellTwo.width = \"15%\"; newCellTwo.id = \"pgSummary\"; var newCellThree = trPg.insertCell(2); newCellThree.width = \"45%\"; newCellThree.id = \"pgNumContext\"; var newCellFour = trPg.insertCell(3) newCellFour.width = \"20%\"; newCellTwo.innerHTML = \"共<span id=\'totalNum\'>\" + tN + \"</span>项 第<span id=\'cuPgNumber\' style=\'color:red\'>\" + cP + \"</span>/<span id=\'sumPgNumber\' >\" + tP + \"</span>页\"; var pageHtml = \" <a href=\'#\' onclick=\'gotoPage(1)\'>首页</a>\"; pageHtml += \"<a id=\'prevPg\' href=\'#\' onclick=\'goToNextPrev(-1)\'> 上页 </a>\"; for (var i = 1; i < tP + 1; i++) { var numColor = \"\"; if (i == 1) numColor = \"red\"; pageHtml += \"<a id=\'numPg\" + i + \"\' style=\'color:\" + numColor + \"\' href=\'#\' onclick=\'gotoPage(\" + i + \")\'>\" + i + \" </a>\"; } pageHtml += \"<a id=\'nextPg\' href=\'#\' onclick=\'goToNextPrev(1)\'> 下页</a>\"; pageHtml += \"<a href=\'#\' onclick=\'gotoPage(\" + tP + \")\'> 尾页</a>\"; pageHtml += \" <input name=\'pgNumber\' type=\'text\' id=\'pgNumber\' size=\'3\' onKeyPress=\'return handleEnterOnPgNumber();\'> \" + \"<input name=\'goto\' type=\'button\' id=\'goto\' value=\'go\' onClick=\'forward()\'>\"; newCellThree.innerHTML = pageHtml; } //构造页面跳转的js函数,函数中需要判断输入的页号是否是合法的数值 function forward() { if (!(/^([-]){0,1}([0-9]){1,}$/.test($(\"pgNumber\").value))) { //输入的值不合法 alert(\"请输入合法的页号!\"); $(\"pgNumber\").focus(); $(\"pgNumber\").select(); } else gotoPage($(\"pgNumber\").value); } //处理在跳转页面上按下回车的情况 function handleEnterOnPgNumber() { if (event.keyCode == 13) { forward(); return false; } return true; } function gotoPage(oNum) { // 页数不能为0或者为负数 (首页,尾页) if (oNum > 0) { var totalNumber = parseInt($(\"totalNum\").innerText); //总记录数 var curPgNumber = parseInt($(\"cuPgNumber\").innerText); var totalPgNumber = parseInt($(\"sumPgNumber\").innerText); // 总页数 if (parseInt(oNum) <= totalPgNumber) { chgPages(oNum, totalPgNumber, totalNumber); for (var k = 1; k < totalPgNumber + 1; k++) { $(\"numPg\" + k).style.color = \"\"; } $(\"numPg\" + oNum).style.color = \"red\"; getPagerInfo(oNum); } else { alert(\"请输入合法的页号!\"); $(\"pgNumber\").focus(); $(\"pgNumber\").select(); return; } } } function goToNextPrev(oNum) { var addNum = parseInt(oNum); var totalNumber = parseInt($(\"totalNum\").innerText); //总记录数 var curPgNumber = parseInt($(\"cuPgNumber\").innerText); var totalPgNumber = parseInt($(\"sumPgNumber\").innerText); // 总页数 //如果当前页是第一页,点击前一页不用刷新 //如果当前页是最后一页,点击下一页不用刷新 if ((curPgNumber + addNum) > 0 && (curPgNumber + addNum) <= totalPgNumber) { chgPages(parseInt(curPgNumber + addNum), totalPgNumber, totalNumber); for (var k = 1; k < totalPgNumber + 1; k++) { $(\"numPg\" + k).style.color = \"\"; } $(\"numPg\" + parseInt(curPgNumber + addNum)).style.color = \"red\"; getPagerInfo(parseInt(curPgNumber + addNum)); } } function chgPages(cuPg, toPg, tNum) { // $(\"totalNum\").innerHTML = tNum; $(\"cuPgNumber\").innerHTML = cuPg; //$(\"sumPgNumber\").innerHTML = toPg; } function getPagerInfo(oNum) { // 处理请求,更新内容 var xmlReq = createXMLHTTP(); xmlReq.open(\"post\", \"/AjaxOperations.aspx?pgNumber=\" + oNum, true); xmlReq.onreadystatechange = function() { if (xmlReq.readyState == 4) { if (xmlReq.status == 200) { //xmlReq.responseText为输出的那段字符串 $(\"tbTest\").innerHTML = xmlReq.responseText; } else { $(\"tbTest\").innerHTML = \" 获取数据中,请稍等...\"; //alert(\"Connect the server failed!\"); } } } xmlReq.send(null); }
Default.aspx:
<%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeBehind=\"Default.aspx.cs\" Inherits=\"WebTest2008.Default\" %> <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\"> <head runat=\"server\"> <script src=\"js/testJs.js\" type=\"text/javascript\"></script> <style type=\"text/css\"> A:link { color: #003399; text-decoration: none; } A:visited { color: #003366; text-decoration: none; } A:hover { color: #ff0000; text-decoration: underline; } A:active { color: #00ff00; text-decoration: none; } </style> <title></title> </head> <body onload=\"showPages(1, 10, 100)\"> <form id=\"form1\" runat=\"server\"> <div> <div style=\"text-align: center\" id=\"tbTest\"> 第1页</div> <table cellspacing=\"0\" style=\"width: 100%; height: 30px\" border=\"0\" align=\"center\"> <tr id=\"trPager\"> </tr> </table> </div> </form> </body> </html>
Default.aspx.cs:
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebTest2008 { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } } }
AjaxOperations.aspx:
AjaxOperations.aspx.cs:
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebTest2008 { public partial class AjaxOperations : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!string.IsNullOrEmpty(Request[\"pgNumber\"])) { //int pgNum = Convert.ToInt32(Request[\"pgNumber\"]); Response.Write(\"第\" + Request[\"pgNumber\"] + \"页\"); } } } }
Ok了,在我的机器上(vs2008)测试通过,简单的ajax分页效果就实现了。
希望本文所述对大家ajax程序设计有所帮助。
本文地址:https://www.stayed.cn/item/21551
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我