jQuery getJSON() + .ashx + jquery.pager 实现分页

在以前文章jQuery getJSON() + .ashx 实现分页 实现的分页比较简单,刚好看到网上的jquery.pager 插件,就把原来代码修改了一翻。

jquery.pager下载:http://plugins.jquery.com/project/Pager

 

一、.html页

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <link href="Pager.css" rel="stylesheet" type="text/css" />
     <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
     <script src="jquery.pager.js" type="text/javascript"></script>
     <script type="text/javascript">
         var pagecount;
         $(document).ready(function() {
             $.get("Handler.ashx", { type:1,pagesize:20,index:1}, function(data, textStatus) {
                 pagecount = data;
                 $("#pager").pager({ pagenumber: 1, pagecount: pagecount, buttonClickCallback: PageClick });
             });
             Go(1);
         });
         PageClick = function(pageclickednumber) {
             $("#pager").pager({ pagenumber: pageclickednumber, pagecount: pagecount, buttonClickCallback: PageClick });
             Go(pageclickednumber);
         }         
         function Go(index) {
             $("#Content").html("");          
             $.getJSON("Handler.ashx", { type:0, pagesize:10, index:index }, function(data) {
                 $("#Content").append("<tr><th style='width:130px'>id</th><th style='width:150px'>title</th></tr>");
                 $.each(data, function(i) {
                     $("#Content").append("<tr><td>" + data[i].id + "</td><td>" + data[i].title + "</td></tr>");
                 })              
             });
         }
     </script>
</head>
<body>
    <form id="form1" runat="server">        
        <div style="width: 100%">
           <table id="Content" >                         
           </table>
           <div id="pager" ></div>
        </div>          
    </form>
</body>
</html>
 

二、.ashx页

 

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;
using System.Text;

public class Handler : IHttpHandler {
   
    public void ProcessRequest (HttpContext context)
    {
        context.Response.ContentType = "text/plain";
      
        DataBase db = new DataBase();
        int pageSize = int.Parse(context.Request.Params["pagesize"]); //每页记录数
        int pageIndex = int.Parse(context.Request.Params["index"]);  //当前页索引     
        int type = int.Parse(context.Request.Params["type"]); //1为获取总页数,0为获取分页数据           

        if (type == 1)
        {
            int recordCount = db.GetRecordCount("select count(*) from test");
            int pageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(recordCount) / pageSize));
            context.Response.Write(pageCount.ToString());
        }
        else
        {           
            string sql = string.Format("select id,title from ( select row_number() over (order by id) as rowNum,* from test) as t "
                + " where rowNum>{0} and rowNum<={1}", (pageIndex - 1) * pageSize, pageIndex * pageSize);
            System.Data.DataTable dt = db.GetDataTable(sql);

            context.Response.Write(JSONHelper.DataTableToJSON(dt));
        }
    }
    public bool IsReusable {
        get {
            return false;
        }
    }
}


三、效果

 

 

---------------------------------------------------------------------------------------

 

备注说明:

1、其中JSONHelper.DataTableToJSON(dt)方法为DataTable解析成JSON,见另一篇文章JSONHelper 帮助类

2、我把jquery.pager.js里面的按钮改为了中文;

3、当当前页为第1页时,页面还显示“首页”、“上一页”,当当前页为最后一页时,页面还显示“下一页”、“末页”,不太符合常理。

可以修改jquery.pager.js文件使当前页为第1页时隐藏“首页”、“上一页”,当前页为最后一页时,隐藏“下一页”、“末页”,改的2个地方如下加粗代码所示:

 

  if (pagenumber > 1)
            $pager.append(renderButton('首页', pagenumber, pagecount, buttonClickCallback)).append(renderButton('上一页', pagenumber, pagecount, buttonClickCallback));

 

  if (pagenumber < pagecount)
            $pager.append(renderButton('下一页', pagenumber, pagecount, buttonClickCallback)).append(renderButton('末页', pagenumber, pagecount, buttonClickCallback));

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值