异步分页

 

 

 

异步分页: 即不刷新页面加载数据;

当需要将网页的数据进行浏览时,就需要使用分页技术,实际上就是当单击某一页的链接时,将该页的数据查询查询出来;

3个参数;

1. total : 表中的数据的记录的总条数; // int result =(int)SqlHelper.ExecuteScalar("select count(*) from tableName");

2.pageSize:每页显示多少条记录(设定一个默认值);

3.pageIndex: 当前需要单击的页码(初次加载pageIndex = 1);

实现原理:index.html + Handle.ashx(一般处理程序)实现异步分页

初次加载页面

1. 后台向前台提供total值;   前台初始化分页导航栏

2.后台向前台提供 表中 1,pageSize ] 行的记录;

 前台 刷新 table;

 

// 用户单击页码;

 

3.单击页码, 前台向后台提供[ start,end ] 

   其中:   var start = pageSize * (pageIndex - 1) + 1;
             var end = start + pageSize - 1;

   前台接受到数据刷新table;

上代码:

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using Entity;
namespace aspWeb
{
    /// <summary>
    /// GetStudentList 的摘要说明
    /// </summary>
    public class StudentList: IHttpHandler
    {
        public int total = (int)SqlHelper.ExecuteScalar("select count(*) from Student_tb");
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            HttpRequest request = context.Request;
            string  method = context.Request.HttpMethod;
            if(method == "GET") { context.Response.Write(this.total);return; }
            int start = 0, end = 0;//获取 前台 start,end 数据;
            int.TryParse(request.Form["start"], out start);
            int.TryParse(request.Form["end"], out end);
            List<Student> students = GetStudentList(start, end);
            JavaScriptSerializer json = new JavaScriptSerializer();
            context.Response.Write(json.Serialize(students));
        }

//获取表中 [start,end] 行的记录
        public List<Entity.Student> GetStudentList(int start, int end)
        {
            List<Entity.Student> students = new List<Student>();
            string sql = "select * from (select row_number() over (order by Id) as rowNum,* from Student_tb) as t where rowNum between " + start + " and " + end;
            SqlDataReader reader = SqlHelper.ExecuteReader(sql);
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    Student stu = new Student();
                    stu.ID =reader.GetInt32(1);
                    stu.StuNum = reader.GetString(2);
                    stu.StuName = reader.GetString(3);
                    stu.StuClass = reader.GetString(4);
                    stu.StuBirth = reader.GetDateTime(5).ToShortDateString();
                    stu.StuSex = reader.GetString(6);
                    stu.StuPhone = reader.GetString(7);
                    students.Add(stu);
                }

 

            }

 

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

/*前台核心代码*/

    <script type="text/javascript">
        var  table_data = [];  //存放表中的数据;
        $(function () {
            var a = { color: 'blur', sex: 'black', border: '1px solid #ddd' };
            var b = { background: 'red' };
            var totalData = 0; //总记录条数, 默认为0,实际值从后台获取;
            var pageSize = 6; //默认每页显示的10条记录
            $.ajax({
                url: "../StudentList.ashx",
                type: "get",
                dataType: "text",
                data: { start: 1, end: pageSize },
                success: function (data) {
                    totalData = Number(data);//获取总记录条数
                    //开始布局分页导航栏
                    $(".pagination").Paging({
                        classStyle: a,//a标签样式的对象,也可以不定义使用默认值
                        backClass: b,//选中的页数的背景,也可以不定义使用默认值
                        isFirst: true,   //首页按钮是否显示
                        isPre: true,     //下一页按钮是否显示
                        showRecordNum: pageSize, // 一页列表数量
                        totalNum: totalData,   // 总列表数量
                        //单击页码按钮showNum函数被调用
                        showNum: function (pageIndex, total) {
                            //pageIndex 页码,total 总页数
                            var start = pageSize * (pageIndex - 1) + 1;
                            var end = start + pageSize - 1;
                            //向后台要第start 到 end的学生记录;
                            $.ajax({
                                url: "../StudentList.ashx",
                                type: "POST",
                                dataType: "json",
                                data: { start: start, end: end },
                                success: function (data) {
                                    table_data = data;

 

                                    $("#tbody").empty();
                                        $('#table').renderTable();
                                   
                                }

 

                            });

 

                        }
                    });
                }

 

            });
            //获取pageIndex =1 的信息;
            $.ajax({
                url: "../StudentList.ashx",
                type: "POST",
                dataType: "json",
                data: { start: 1, end: pageSize },
                success: function (data) {
                    table_data = data;

 

                    $("#tbody").empty();
                    $('#table').renderTable();

 

                }

 

            });

 

        });

 

    </script>

//加油!

效果图

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值