JQuery实现分页程序代码

做Web开发的程序员,分页时在所难免的,微软GridView、AspPager等设置分页数据可以自动分页,但是这里浏览器会闪动,用户体验不是很友好,在此我整理了JQuery实现分页,并且使用。

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的丹寨网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

JQuery绑定模板,显示数据

首先Default.aspx页面需要引用的JS文件

JQuery采用 1.4.1.1 下载地址:http://pan.baidu.com/share/link?shareid=3024434948&uk=2920032010

JQuery数据显示模板JS 下载地址:http://pan.baidu.com/share/link?shareid=3030793948&uk=2920032010

分页按钮样式 下载地址:http://pan.baidu.com/share/link?shareid=3146737028&uk=2920032010

Default.aspx页面js代码,如下,每页条数可以自定义,也可以放置配置文件中,queryString函数是根据URL参数名称,获取参数的值

 
 
 
  1.         var pagesize = 10;
  2.         var page = thispage();
  3.         $(document).ready(function () {
  4.             ajaxList(page);
  5.         });
  6.         function queryString(pname) {
  7.             var query = location.search.substring(1);
  8.             var str = "";
  9.             params = query.split("&");
  10.             if (params.length > 0) {
  11.                 for (var n in params) {
  12.                     var pairs = params[n].split("=");
  13.                     if (pairs[0] == pname) {
  14.                         str = pairs[1];
  15.                         break;
  16.                     }
  17.                 }
  18.             }
  19.             return str;
  20.         }
  21.         function thispage() {
  22.             var r = /^[1-9][0-9]*$/;
  23.             if (queryString('page') == '') return 1;
  24.             if (r.test(queryString('page')))
  25.                 return parseInt(queryString('page'));
  26.             else
  27.                 return 1;
  28.         }
  29.         function ajaxList(currentpage) {
  30.             if (currentpage != null) page = currentpage;
  31.             $.ajax({
  32.                 type: "get",//get类型,获取用QueryString方法,post类型,用Form获取传值
  33.                 dataType: "json",
  34.                 data: "pageIndex=" + currentpage + "&pagesize=" + pagesize + "&clienttt=" + Math.random(),
  35.                 url: "Member_Ajax.aspx",
  36.                 error: function (XmlHttpRequest, textStatus, errorThrown) { alert(XmlHttpRequest.responseText); },
  37.                 success: function (d) {
  38.                     switch (d.result) {
  39.                         case '-1':
  40.                             Alert(d.returnval);
  41.                             break;
  42.                         case '0':
  43.                             Alert(d.returnval);
  44.                             break;
  45.                         case '1':
  46.                             $("#ajaxList").setTemplateElement("tplList", null, { filter_data: true });
  47.                             $("#ajaxList").processTemplate(d);
  48.                             $("#ajaxPageBar").html(d.pagebar);
  49.                             break;
  50.                     }
  51.                 }
  52.             });
  53.         }
  54.  

Default.aspx页面Form代码如下,页面数据使用JQuery jTemplates绑定数据,非常方便,只需设置JSON格式数据,引用JS文件即可

 
 
 
  1.             
  2.             
  3.                 
  4.                     
  5.                     ID
  6.                     姓名
  7.                     年龄
  8.                     
  9.                
  10.             
  11.             
  12.     {#foreach $T.table as record}
  13.     
  14.         
  15.             
  16.         
  17.         {$T.record.Id}
  18.         
  19.             {$T.record.Name}
  20.         
  21.         
  22.             {$T.record.Age}
  23.         
  24.     
  25.     {#/for}
  26.             
  27.      
  28.     
  29.     
  •     
  •     
  • $T.record.Id 中Id对应的是实体类Id属性

    #p#

    上面Javascript方法中用到Member_Ajax.aspx页面代码如下,注意:这里是将数据已JSON格式输出到页面,配合JQuery数据模板使用,所有Member_Ajax.aspx页面,不应该包含Html标签,其代码格式如下

     
     
     
    1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Member_Ajax.aspx.cs" Inherits="Nick.Kuang.Web.Member_Ajax" %>

    Member_Ajax.aspx cs页面代码

     
     
     
    1. protected void Page_Load(object sender, EventArgs e)
    2.         {
    3.             Response.Write(GetAll());
    4.         }
    5.         private string GetAll()
    6.         {
    7.             List list = new List();
    8.             for (int i = 0; i < 100; i++)
    9.             {
    10.                 list.Add(new Student { Id = i, Name = "Name" + i, Age = i });
    11.             }
    12.             
    13.             int pageIndex = GetPage();
    14.             int pageSize = StrToInt(QueryString("pagesize"), 10); ;
    15.             JavaScriptSerializer javascriptSerializer = new JavaScriptSerializer();
    16.             string result = javascriptSerializer.Serialize(list.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList());
    17.             string response = "{\"result\" :\"1\"," +
    18.                 "\"returnval\" :\"操作成功\"," +
    19.                 "\"pagebar\" :\"" + PageBar.GetPageBar(3, "js", 2, list.Count, pageSize, pageIndex, "javascript:ajaxList(<#page#>);") + "\"," +
    20.                "\"" + "totalCountStr" + "\":" + 10 + ",\"" + "table" + "\":" + result + 
    21.                 "}";
    22.             return response;
    23.         }
    24.         private static int GetPage()
    25.         {
    26.             int page = StrToInt(QueryString("pageIndex"), 0) < 1 ? 1 : StrToInt(QueryString("pageIndex"), 0);
    27.             return page;
    28.         }
    29.         private static int StrToInt(string value, int defaultValue)
    30.         {
    31.             if (IsNumeric(value))
    32.                 return int.Parse(value);
    33.             else
    34.                 return defaultValue;
    35.         }
    36.         /// 
    37.         /// 获取querystring
    38.         /// 
    39.         /// 参数名
    40.         /// 返回值
    41.         private static string QueryString(string s)
    42.         {
    43.             if (HttpContext.Current.Request.QueryString[s] != null && HttpContext.Current.Request.QueryString[s] != "")
    44.             {
    45.                 return SafetyQueryS(HttpContext.Current.Request.QueryString[s].ToString());
    46.             }
    47.             return string.Empty;
    48.         }
    49.         /// 
    50.         /// 将字符串中的一些标签过滤
    51.         /// 
    52.         /// 
    53.         /// 
    54.         private static string SafetyQueryS(string theString)
    55.         {
    56.             string[] aryReg = { "'", ";", "\"", "\r", "\n", "<", ">" };
    57.             for (int i = 0; i < aryReg.Length; i++)
    58.             {
    59.                 theStringtheString = theString.Replace(aryReg[i], string.Empty);
    60.             }
    61.             return theString;
    62.         }
    63.         private static bool IsNumeric(string value)
    64.         {
    65.             System.Text.RegularExpressions.Regex myRegex = new System.Text.RegularExpressions.Regex("^[-]?[1-9]*[0-9]*$");
    66.             if (value.Length == 0)
    67.             {
    68.                 return false;
    69.             }
    70.             return myRegex.IsMatch(value);
    71.         }

    使用JavaScriptSerializer中的Serialize方法可以将Object类型数据转换成JSON格式的数据,告别以前拼接成字串的方法

    Student实体类代码属性

     
     
     
    1. public class Student
    2.     {
    3.         public int Id { get; set; }
    4.         public string Name { get; set; }
    5.         public int Age { get; set; }
    6.     }

    #p#

    分页中用到的PageBar类代码,分页调用Default.aspx中ajaxList函数,实现无刷新分页

     
     
     
    1. public class PageBar
    2.     {
    3.         /// 
    4.         /// 完整模式:数字+上下页+首末+总记录信息+指定页码翻转
    5.      /// 
    6.         /// 
    7.         /// 
    8.         /// 
    9.         /// 
    10.         /// 
    11.         /// 
    12.         /// 
    13.         /// 
    14.         /// 
    15.         /// 
    16.         /// 
    17.         private static string GetDetailbar(string stype, int stepNum, int pageRoot, int pageFoot, int pageCount, int countNum, int pageSize, int currentPage, string Http1, string HttpM, string HttpN, int limitPage)
    18.         {
    19.             StringBuilder sb = new StringBuilder();
    20.             sb.Append("");
    21.             //sb.Append("共" + countNum.ToString() + "条,当前第" + currentPage.ToString() + "/" + pageCount.ToString() + "页   ");
    22.             sb.Append("共" + countNum.ToString() + "条记录/" + pageCount.ToString() + "页  ");
    23.             if (countNum > pageSize)
    24.             {
    25.                 if (currentPage != 1)//只要不是***页
    26.                     sb.Append("«");
    27.                 if (pageRoot > 1)
    28.                 {
    29.                     sb.Append("1..");
    30.                 }
    31.                 if (stepNum > 0)
    32.                 {
    33.                     for (int i = pageRoot; i <= pageFoot; i++)
    34.                     {
    35.                         if (i == currentPage)
    36.                             sb.Append("" + i.ToString() + "");
    37.                         else
    38.                             sb.Append("" + i.ToString() + "");
    39.                         if (i == pageCount)
    40.                             break;
    41.                     }
    42.                 }
    43.                 if (pageFoot < pageCount)
    44.                 {
    45.                     sb.Append(".." + pageCount + "");
    46.                 }
    47.                 if (currentPage != pageCount)//只要不是***一页
    48.                     sb.Append("»");
    49.                 if (stype == "html")
    50.                     sb.Append("转到第 ',this.value); return false;}\" /> 页");
    51.             }
    52.             sb.Append("
    ");
  •             return sb.ToString();
  •         }
  •         /// 
  •         /// 分页导航
  •         /// 
  •         /// 支持1=simple,2=normal,3=full
  •         /// html/js,只有当stype为html且mode为3的时候显示任意页的转向
  •         /// 步数,如果步数为i,则每页的数字导航就有2i+1
  •         /// 记录总数
  •         /// 每页记录数
  •         /// 当前页码
  •         /// 第1页的链接地址模板,支持js
  •         /// 第M页的链接地址模板,支持js,M不大于limitPage
  •         /// 第N页的链接地址模板,支持js,N大于limitPage
  •         /// 
  •         /// 
  •         public static string GetPageBar(int mode, string stype, int stepNum, int countNum, int pageSize, int currentPage, string Http1, string HttpM, string HttpN, int limitPage)
  •         {
  •             string pagebar = "";
  •             //if (countNum > pageSize)
  •             //{
  •             int pageCount = countNum % pageSize == 0 ? countNum / pageSize : countNum / pageSize + 1;
  •             currentPage = currentPage > pageCount ? pageCount : currentPage;
  •             currentPage = currentPage < 1 ? 1 : currentPage;
  •             int stepageSize = stepNum * 2;
  •             int pageRoot = 1;
  •             int pageFoot = pageCount;
  •             pageCount = pageCount == 0 ? 1 : pageCount;
  •             if (pageCount - stepageSize < 1)//页数比较少
  •             {
  •                 pageRoot = 1;
  •                 pageFoot = pageCount;
  •             }
  •             else
  •             {
  •                 pageRoot = currentPage - stepNum > 1 ? currentPage - stepNum : 1;
  •                 pageFoot = pageRoot + stepageSize > pageCount ? pageCount : pageRoot + stepageSize;
  •                 pageRoot = pageFoot - stepageSize < pageRoot ? pageFoot - stepageSize : pageRoot;
  •             }
  •            
  •             pagebar = GetDetailbar(stype, stepNum, pageRoot, pageFoot, pageCount, countNum, pageSize, currentPage, Http1, HttpM, HttpN, limitPage);
  •                  
  •             return pagebar;
  •         }
  •         public static string GetPageBar(int mode, string stype, int stepNum, int countNum, int pageSize, int currentPage, string HttpN)
  •         {
  •             return GetPageBar(mode, stype, stepNum, countNum, pageSize, currentPage, HttpN, HttpN, HttpN, 0);
  •         }
  •         public static string GetPageUrl(int chkPage, string Http1, string HttpM, string HttpN, int limitPage)
  •         {
  •             string Http = string.Empty;
  •             if (chkPage == 1)
  •                 Http = Http1;
  •             else
  •                 Http = (chkPage > limitPage || limitPage == 0) ? HttpN : HttpM;
  •             return Http.Replace("<#page#>", chkPage.ToString());
  •         }
  •     }
  • 代码基本上写好了,希望对大家有用,一起学习,一起进步。

    标题名称:JQuery实现分页程序代码
    文章起源:http://www.shufengxianlan.com/qtweb/news45/53695.html

    网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

    猜你还喜欢下面的内容

    网站制作知识

    分类信息网站