利用AJAX实现无刷新分页技术原理:

其主要是利用AJAX的异步处理机制,实现数据的异步传递,它隐藏了客户端向服务端请求数据的状态,在客户端表现为无刷新的显示状态。

实现分页的步骤:

1.客服端点击页码按钮触发分页事件

2.客户端传递页码参数到服务端

3.服务端连接数据库获取数据

4.服务端将数据序列化并写入输出流

5.客户端获取输出流,并转换为JSON格式数据

6.将JSON数据组合排列到标签元素生成具体页面。

具体实例:

ASPX页面代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="jquery-1.4.1.js"></script>
     <script type="text/javascript">
         var pageCount = 0;
         var pageIndex = 1;
         $(function () {
             //getdata
             $.post("Pager.ashx", { "data": "getdata", "count": "1" }, function (data, status) {
                 var dd = $.parseJSON(data);
                 $(".con li").remove();
                 for (var i = 0; i < dd.length; i++) {
                     var li = $("<li>" + dd[i].datetime + ":" + dd[i].Msg + "</li>");                 
                     $(".con").append(li);
                 }
             });
             //getdatacount
             $.post("Pager.ashx", { "data": "getcount" }, function (data, status) {
                 //alert(data);
                 pageCount = data;
                 $(".b").text(data);
             });
             //尾页
             $(".pp li:eq(0) a").click(function (e) {
                 e.preventDefault();
                 $.post("Pager.ashx", { "data": "getdata", "pagecount": pageCount }, function (data, status) {
                     var dd = $.parseJSON(data);
                     $(".con li").remove();
                     for (var i = 0; i < dd.length; i++) {
                         var li = $("<li>" + dd[i].datetime + ":" + dd[i].Msg + "</li>");
                         $(".con").append(li);
                     }
                 });
             });
             //下页
             $(".pp li:eq(1) a").click(function (e) {
                 e.preventDefault();
                 if (pageIndex < pageCount) {
                     pageIndex++;

$.post("Pager.ashx", { "data": "getdata", "pagecount": pageIndex }, function (data, status) {
                         var dd = $.parseJSON(data);
                         $(".con li").remove();
                         for (var i = 0; i < dd.length; i++) {
                             var li = $("<li>" + dd[i].datetime + ":" + dd[i].Msg + "</li>");
                             $(".con").append(li);
                         }
                     });
                 }
             });
             //上一页
             $(".pp li:eq(2) a").click(function (e) {
                
                 e.preventDefault();
                 if (pageIndex > 1) {
                     pageIndex--;

$.post("Pager.ashx", { "data": "getdata", "pagecount": pageIndex }, function (data, status) {
                         var dd = $.parseJSON(data);
                         $(".con li").remove();
                         for (var i = 0; i < dd.length; i++) {
                             var li = $("<li>" + dd[i].datetime + ":" + dd[i].Msg + "</li>");
                             $(".con").append(li);
                         }
                     });
                 }
             });
             //首页
             $(".pp li:eq(3) a").click(function (e) {
                 e.preventDefault();
                 pageIndex = 1;

$.post("Pager.ashx", { "data": "getdata", "pagecount": pageIndex }, function (data, status) {
                     var dd = $.parseJSON(data);
                     $(".con li").remove();
                     for (var i = 0; i < dd.length; i++) {
                         var li = $("<li>" + dd[i].datetime + ":" + dd[i].Msg + "</li>");
                         $(".con").append(li);
                     }
                 });
             });
         })
     </script>
     <style type="text/css">
     li{ float:right; margin:0 2px 0; list-style:none;}
     .page{float:right; margin-right:1em;}
     .content{ clear:both;}
     .con li{ float:none; list-style:none; background-color:Gray;}
     a{ cursor:pointer;}
         .con
         {
             
             width: 400px;
         }
     </style>
</head>
<body>
    <form id="form1" runat="server">
    <div class="content" style=" width:600px; height:400px; border:1px solid red;">
    <ul class="con"></ul>
    </div>
    <div>
    <ul class="pp">
                  <li><a>尾页</a></li>
                  <li><a>下一页</a></li>
                  <li><a>上一页</a></li>
                  <li><a>首页</a></li>
    <li><div class="page">共有数据:<span class="b"></span></div></li>
    </ul>
    </div>
    </form>
</body>
</html>

后台处理程序ashx

<%@ WebHandler Language="C#" class="Pager" %>

using System;
using System.Web;
using System.Collections.Generic;
using System.Web.Script.Serialization;
using System.Data;
using System.Data.SqlClient;
using System.Text;

public class Pager : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string paras = context.Request.Params["data"].ToString();
        //string pagecount = ;
        if (paras == "getcount")
        {
            fenyeSlect ff = new fenyeSlect();
            DataTable dt = ff.selectCount().Tables[0];
            int count = Convert.ToInt32(dt.Rows[0][0].ToString());
            int pageCount = count / 10;
            if (count % 10 != 0)
            {
                pageCount++;
            }
            context.Response.Write(pageCount);
        }
        else if (paras == "getdata")
        {
            string pagenum = context.Request.Params["count"].ToString();

int ipagenum = Convert.ToInt32(pagenum);

fenyeSlect ff = new fenyeSlect();

DataSet ds = ff.GetPageData((ipagenum - 1) * 10 + 1, (ipagenum) * 10);

DataTable dt = ds.Tables[0];

List<News> list = new List<News>();

// string[] list00=new string[dt.Rows.Count];

for (int row = 0; row < dt.Rows.Count; row++)
            {
                //  list00[row] = dt.Rows[row][1].ToString();
                list.Add(new News { datetime = dt.Rows[row][1].ToString(), Msg = dt.Rows[row][2].ToString(), ID = dt.Rows[row][0].ToString() });
            }

JavaScriptSerializer jss = new JavaScriptSerializer();

string data = jss.Serialize(list);

context.Response.Write(data);
        }
      
        //context.Response.Write("Hello World");
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }
    public class fenyeSlect
    {
        public SqlConnection getconn()
        {
            string con = "server=.;uid=sa;pwd=nexel;database=wsxfy;";
            SqlConnection conn = new SqlConnection(con);
            return conn;
        }
        /// <summary>
        /// 获得条数,有多少条数据
        /// </summary>
        /// <returns></returns>
        public DataSet selectCount()
        {
            string selectCount = "SELECT COUNT(*) FROM T_Comment";
            DataSet ds = new DataSet();

SqlConnection conn = getconn();
            conn.Open();
            SqlDataAdapter da = new SqlDataAdapter(selectCount, conn);
            da.Fill(ds);
            return ds;

}
        public DataSet GetPageData(int StartRowIndex, int EndRowIndex)
        {
            //   string fenye = "select * from (select ID,Title,Person,[Time],Row_Number() over(order by ID desc) rownum from tb_IndustryNews)t where t.rownum>="+StartRowIndex+" and t.rownum<="+EndRowIndex+"";
            StringBuilder sql = new StringBuilder();
            sql.Append("select * from ( ");
            sql.Append("select ID,PostDate,Msg,Row_Number() over(order by ID desc) Rownum from T_Comment ");
            sql.Append(")t ");
            sql.Append("where t.Rownum>='" + StartRowIndex + "' and t.Rownum<='" + EndRowIndex + "'");

DataSet ds = new DataSet();

SqlConnection conn = getconn();
            conn.Close();
            SqlDataAdapter da = new SqlDataAdapter(sql.ToString(), conn);
            da.Fill(ds);
            return ds;
        }
    }
    public class News
    {
        public string datetime { get; set; }
        public string Msg { get; set; }
        public string ID { get; set; }
    }
}

学习笔记之AJAX无刷新分页的更多相关文章

  1. ajax 无刷新分页

    //ajax 无刷新分页1.前台要做的 滑动时 当前page+1,通过page ajax请求后台接口获取数据将数据进行拼装;2.后台要做的 做分页接口返回json数据前台判断触发请求条件: var p ...

  2. thinkphp ajax 无刷新分页效果的实现

    思路:先做出传统分页效果,然后重新复制一份Page.class.php类,对它进行修改,把js中的函数传到page类中,把上一页.下一页.首页.尾页.链接页中的url地址改成js控制的函数,模板页面中 ...

  3. 关于Ajax无刷新分页技术的一些研究 c#

    关于Ajax无刷新分页技术的一些研究 c# 小弟新手,求大神有更好的解决方案,指教下~ 以前做项目,用过GridView的刷新分页,也用过EasyUI的封装好的分页技术,最近在老项目的基础上加新功能, ...

  4. thinkphp下实现ajax无刷新分页

    1.前言 作为一名php程序员,我们开发网站主要就是为了客户从客户端进行体验,在这里,thinkphp框架自带的分页类是每次翻页都要刷新一下整个页面,这种翻页的用户体验显然是不太理想的,我们希望每次翻 ...

  5. ThinkPhp 3.2 ajax无刷新分页(未完全改完,临时凑合着用)

    临时更改后的page类(很多地方没修改...因为笔者PHP没学好..)如下: <?phpnamespace Fenye\libs; /**  file: page.class.php   完美分 ...

  6. Ajax无刷新分页

    前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxPage ...

  7. jquery+jquery.pagination+php+ajax 无刷新分页

    <!DOCTYPE html> <html ><head><meta http-equiv="Content-Type" content= ...

  8. SUI分页组件和avalon搞定ajax无刷新分页

    <div ms-controller="main"> <h2 class="pagination-centered">{{ title ...

  9. php+ajax无刷新分页原生ajax实现分页最简单完整实例-完整代码,

    展示页面:index.html <html><script> function ajax_show() { // 获取当前页 var page =1; var xhr = ne ...

随机推荐

  1. C51 延时程序

    一.相关换算 1.1s=10^3ms(毫秒)=10^6μs(微秒)=10^9ns(纳秒)=10^12ps(皮秒)=10^15fs(飞秒)=10^18as(阿秒)=10^21zm(仄秒)=10^24ym ...

  2. POJ2248 A Knight's Journey(DFS)

    题目链接. 题目大意: 给定一个矩阵,马的初始位置在(0,0),要求给出一个方案,使马走遍所有的点. 列为数字,行为字母,搜索按字典序. 分析: 用 vis[x][y] 标记是否已经访问.因为要搜索所 ...

  3. HBase Client API使用(二)---查询及过滤器

    相关知识 创建表插入数据删除等见:http://www.cnblogs.com/wishyouhappy/p/3735077.html HBase API简介见:http://www.cnblogs. ...

  4. HBase Java API入门

    概括 1. 创建.删除及启用禁用表.添加列等都需用到HBaseAdmin,另外需要注意删除,添加列等操作都需要禁用表 2. 表中添加数据,查询等都是和HTable相关,如果是多线程的情况下注意用HTa ...

  5. Java---IO加强(1)

    RandomAccessFile ★随机访问文件,自身具备读写的方法. new RandomAccessFile()之后,若文件不存在会自动创建,存在则不创建.--该类其实内部既封装了字节输入流,又封 ...

  6. CSU 1021 从m个不同元素中取出n (n ≤ m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。组合数的计算公式如下: C(m, n) = m!/((m - n)!n!) 现在请问,如果将组合数C(m, n)写成二进制数,请问转这个二进制数末尾有多少个零。

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82974#problem/B 解题思路:这个题目就是求因子的个数, m!/((m ...

  7. Matlab:回归分析(1)

    1.多元线性回归 %数据的输入 x = [ ]; y = [ ]; %转换为列向量 X = [ones(,) x']; Y = y'; %回归分析及检验 [b, bint, r, rint, stat ...

  8. [Java] LinkedList / Queue - 源代码学习笔记

    简单地画了下 LinkedList 的继承关系,如下图.只是画了关注的部分,并不是完整的关系图.本博文涉及的是 Queue, Deque, LinkedList 的源代码阅读笔记.关于 List 接口 ...

  9. [Design Pattern] DAO Pattern 简单案例

    Data Access Object Pattern, or DAO Pattern, 即 DAO 模式,用于分离底层的数据访问接口,已经上层的业务逻辑. 下面是 Dao 模式的一个简单的案例. St ...

  10. cloudCompute

    云计算使企业可以迅速对市场做出反应而且加强了企业内部的协同 人人都在用云计算的时候能够迅速迁移到云平台已经不叫优势了,反而不使用云计算成为了一种劣势