• Ajax无刷新分页源码未使用分页控件


    源码下载:点击下载

    强类型的DataSet中添加分页的方法:GetPageData(startRowIndex,endRowIndex) 和SelectCount()两个方法;

    GetPageData代码:里面的参数自己添加,因为VS不支持over();

    select * from 
    (
        
    SELECT Id, IpAddress, Comment, PostDate,row_number() over(order by postdate) as rownum
         
    FROM dbo.T_Comment
    )t 
    where t.rownum>=@startRowIndex and t.rownum<=@endRowIndex

    SelectCount代码:

    SELECT COUNT(*FROM T_Comment

    HTML页面代码:

    <!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>
        
    <title></title>
        
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
        
    <style type="text/css">
            ul
            
    {
                list-style
    : none;
                margin
    : 0px;
                padding
    : 0px;
            
    }
            li
            
    {
                border-bottom
    : 1px dashed #000;
                padding
    : 5px;
                font-family
    : "微软雅黑";
                font-size
    : 12px;
            
    }
            .column
            
    {
                width
    : 80%;
                margin
    : 100px auto;
                padding
    : 10px;
                border
    : 1px solid #000;
            
    }
            p
            
    {
                background
    : #CCC;
                padding
    : 10px;
            
    }
            .divstyle
            
    {
                min-height
    : 50px;
                padding
    : 10px;
            
    }
            .trPage
            
    {
            
    }
        
    </style>
        
    <script type="text/javascript" language="javascript">
            $(
    function () {

                
    //请求默认显示第一页数据

                $.post(
    "PageServices.ashx", { "action""getpagedata""pagenum""1" }, function (data, status) {
                    
    if (status == "success") {
                        
    var comments = $.parseJSON(data);
                        $(
    "#ulComments li").remove();   //首先清空上一次的数据;
                        for (var i = 0; i < comments.length; i++) {
                            
    var comment = comments[i];
                            
    var li = $("<li><p>回复日期:" + comment.postDate + "&nbsp;&nbsp;&nbsp;&nbsp;回复IP地址:" + comment.ipAddress + "</p><div class='divstyle'>" + comment.comment + "</div></li>");

                            $(
    "#ulComments").append(li);
                        }
                    }
                });


                $.post(
    "PageServices.ashx", { "action""getpagecount" }, function (data, status) {
                    
    for (var i = 1; i <= data; i++) {
                        
    var td = $("<td><a href=''>" + i + "</a></td>");
                        $(
    ".trPage").append(td);
                    }

                    
    //给链接添加click事件
                    $(".trPage td").click(function (e) {
                        e.preventDefault();

                        $.post(
    "PageServices.ashx", { "action""getpagedata""pagenum": $(this).text() }, function (data, status) {
                            
    var comments = $.parseJSON(data);  //使用JSON序列化数据;
                            $("#ulComments li").remove();   //首先清空上一次的数据;

                            
    for (var i = 0; i < comments.length; i++) {   //遍历响应的数据data
                                var comment = comments[i];   //取到每条评论

                                
    //最后向ul中加载li(数据的内容)
                                var li = $("<li><p>回复日期:" + comment.postDate + "&nbsp;&nbsp;&nbsp;&nbsp;回复IP地址:" + comment.ipAddress + "</p><div class='divstyle'>" + comment.comment + "</div></li>");
                                $(
    "#ulComments").append(li);
                            }
                        });
                    });
                });
            });
        
    </script>
    </head>
    <body>
        
    <div class="column">
            
    <table>
                
    <tr class="trPage">
                
    </tr>
            
    </table>

            
    <ul id="ulComments">
            
    </ul>

            
    <table>
                
    <tr class="trPage">
                
    </tr>
            
    </table>
        
    </div>
    </body>
    </html>

    一般处理程序代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using Ajax无刷新分页.DataSetCommentTableAdapters;
    using System.Web.Script.Serialization;

    namespace Ajax无刷新分页
    {
        
    /// <summary>
        
    /// PageServices 的摘要说明
        
    /// </summary>
        public class PageServices : IHttpHandler
        {

            
    public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType 
    = "text/plain";
                
    string action = context.Request["action"];

                
    if (action == "getpagecount")  //如果请求的参数是getpagecount(获取页数)
                {
                    var adapter 
    = new T_CommentTableAdapter();
                    
    int count = adapter.SelectCount().Value;  //获取数据总条数
                    int pageCount = count / 10;   //每页只显示10条

                    
    if (count % 10 != 0)    //如果数据不够10条,则只显示第一页
                    {
                        pageCount
    ++;
                    }
                    context.Response.Write(pageCount);   
    //返回页数
                }
                
    else if (action == "getpagedata")   //如果请求的的参数是getpagedata(获取评论内容)
                {
                    
    string pagenum = context.Request["pagenum"];   //获取客户端点击的是哪一页
                    int iPageNum = Convert.ToInt32(pagenum);
                    var adapter 
    = new T_CommentTableAdapter();
                    
    // (iPageNum-1)*10+1  第一条数据,(iPageNum)*10 最后一条数据;
                    var data = adapter.GetPageData((iPageNum - 1* 10 + 1, (iPageNum) * 10);

                    List
    <Comment> list = new List<Comment>();   //由于数据过于复杂所引发异常,定义一个Comment的类,内有postDate,comment两个属性;
                    foreach (var row in data)   //遍历data
                    {
                        list.Add(
    new Comment()
                        {
                            postDate 
    = row.PostDate.ToShortDateString(),
                            comment 
    = row.Comment,
                            ipAddress 
    = row.IpAddress
                        });
                    }
                    JavaScriptSerializer jss 
    = new JavaScriptSerializer();
                    context.Response.Write(jss.Serialize(list));  
    //返回序列化的数据;
                }
            }

            
    public bool IsReusable
            {
                
    get
                {
                    
    return false;
                }
            }
        }

        
    public class Comment
        {
            
    public string postDate { getset; }
            
    public string comment { getset; }
            
    public string ipAddress { getset; }
        }
    }

    startIndex=pageIndex*pageSize-pageSize+1;  //或 startIndex=(pageIndex-1)*pageSize+1;

    endIndex=pageIndex+pageSize-1; 

  • 相关阅读:
    Ubuntu 16.04实现SSH无密码登录/免密登录/自动登录(ssh-keygen/ssh-copy-id)
    简单理解Linux的Loopback接口
    iptables为什么需要增加loopback回环的规则
    [ASP.NET Core 3框架揭秘] 依赖注入[10]:与第三方依赖注入框架的适配
    [ASP.NET Core 3框架揭秘] 依赖注入[9]:实现概述
    [ASP.NET Core 3框架揭秘] 依赖注入[8]:服务实例的生命周期
    [ASP.NET Core 3框架揭秘] 依赖注入[7]:服务消费
    [ASP.NET Core 3框架揭秘] 依赖注入[6]:服务注册
    [ASP.NET Core 3框架揭秘] 依赖注入[5]: 利用容器提供服务
    AOP框架Dora.Interception 3.0 [5]: 基于策略的拦截器注册方式
  • 原文地址:https://www.cnblogs.com/zhuiyi/p/2052099.html
Copyright © 2020-2023  润新知