• Pagination.js + Sqlite web系统分页


    前端使用 jquery pagination.js 插件。

    环境准备:jquery.js、pagination.js、pagination.css

    附件下载:https://files.cnblogs.com/files/motion/pagination.rar

    引用的顺序一定是 jquery在 pagination的前面。

    然后,操作方法可以写在闭包函数里。

    第一步,在自己需要展示分页控件的地方创建个div 容器

              <div class="card-body rec-pat p-0">
                <div id="page_focus"></div>
              </div>

    然后使用 pagination.js 的方法初始化组件。

        $(function () {

               var pageIndex = 1; //页面索引初始值
               var pageSize = 8; //每页显示条数初始化,修改显示条数,修改这里即可

             $("#page_focus").pagination({
                dataSource: function (done) {
                    var result = [];
                    $.ajax({
                        cache: false,
                        type: "post",
                        dataType: "json",
                        url: "/Home/GetTotalFocusPageCount",
                        async: false,
                        error: function () {
                            //showTip("提示", "发生未知错误,课程获取失败", "error", "toast-top-right");
                            return false;
                        },
                        success: function (data) {
    
                            for (var i = 1; i < data; i++) {
                                result.push(i);
                            }
                            done(result);
                        }
                    });
                },
                pageSize: pageSize,
                totalNumber: 120,
                showGoInput: true,
                showGoButton: true,
                callback: function (data, pagination) {
                    PageCallback(data, pagination);
                }
    
            })

               //翻页调用
               function PageCallback(index, jq_page) {

                initTable(jq_page.pageNumber, jq_page.pageSize);
              }

    
        })

     /**init table */
        function initTable(pageIndex, pageSize) {
    
            $.ajax({
                cache: false,
                type: "post",
                dataType: "json",
                url: "/Home/GetInitTable",
                data: { pageIndex: pageIndex, pageSize: pageSize },
                async: false,
                error: function () {
                    //showTip("提示", "发生未知错误,课程获取失败", "error", "toast-top-right");
                    return false;
                },
                success: function (data) {
                    if (data != null) {
                        $("#selectDataBody").html("");
                        $("#selectDataBody").append(template("userdefine_template", data));
    
                    }
                }
            });
    
    
    
     

    pagination初始化的方法很多,官网上有很详细的教程。这里先介绍我所使用的这种方法。

    首先是 dataSource参数,这里通过后台,获取总数据条数。 这个 /Home/GetTotalFocusPageCount 路由请求后返回的结果是总记录数,是个int型变量。后台的方法根据实际需要,见仁见智,没有标准写法。

            public int GetTotalFocusPageCount(string userID)
            {
                try
                {
                    int toalCount = 0;
    
                    string strSql = $"SELECT count(*) from MyFocus where userid='{userID}'";
    
                    DataTable dt_Sqlect = sqliteHelper.GetSelectTable(strSql);
    
                    if (dt_Sqlect.Rows[0][0] != null)
                    {
                        toalCount = Convert.ToInt32(dt_Sqlect.Rows[0][0].ToString());
                    }
    
                    return toalCount;                 
                }
                catch (Exception ex)
                {
                    LogInfoHelper.LogError(ex.Message, userID, "GetUserFocus");
                    return  0;
                }
            }

    后台返回总记录条数后,循环给数组result 赋值,然后调用 done(result);这个done 在一开始方法定义就是一个参数 

    function (done) {};这个是pagination 自带的写法,要注意。这个方法会帮助根据 每页的条数计算出总页数,然后渲染到页面。

    到这里页面渲染都可以了。

    然后就是点击下一页的事件了,
    也就是 callback 回调节点
     callback: function (data, pagination) {

    initTable(pagination.pageNumber,pagination.pageSize);
             }
        /**init table */
        function initTable(pageIndex, pageSize) {
    
            $.ajax({
                cache: false,
                type: "post",
                dataType: "json",
                url: "/Home/GetInitTable",
                data: { pageIndex: pageIndex, pageSize: pageSize },
                async: false,
                error: function () {
                    //showTip("提示", "发生未知错误,课程获取失败", "error", "toast-top-right");
                    return false;
                },
                success: function (data) {
                    if (data != null) {
                        $("#selectDataBody").html("");
                        $("#selectDataBody").append(template("userdefine_template", data));
    
                    }
                }
            });
    这里,通过ajax 向后台传参数 pageIndex和pageSize,后台根据参数查询相应页面的数据,返回数据集合,js再渲染到页面,整个分页流程就算完成了。
      public string GetInitTable(int pageIndex, int pageSize)
            {
                try
                {
                    pageIndex = pageIndex - 1; 
    string strSql_data = @$" SELECT * FROM [FinanceData] where 1=1 LIMIT {pageSize} offset {pageIndex * pageSize};"; DataTable dt_Sqlect = sqliteHelper.GetSelectTable(strSql_data); string JsonStringResult = string.Empty; JsonStringResult = JsonConvert.SerializeObject(dt_Sqlect); return JsonStringResult; } catch (Exception ex) { LogInfoHelper.LogError(ex.Message, "GetInitTable)"); return ""; } }


  • 相关阅读:
    dropdownList级联刷新gridView
    Jquery解析json数据
    ASP.NET UserControl 通信
    sharepointWebPart开发、部署、发布过程全记录
    buffer和cache怎么让你们解释的那么难理解?
    Global.asax用法分析
    1、什么是ASP.NET MVC
    在Global.asax文件里实现通用防SQL注入漏洞程序
    ABP vNext V5 + VS2022+ .Net 6.0 学习笔记(1)
    使用IIS时的小问题
  • 原文地址:https://www.cnblogs.com/motion/p/15498927.html
Copyright © 2020-2023  润新知