dataTable插件增加分页跳转js

dataTable插件增加分页跳转js

dataTable插件增加分页跳转js

/**
 * 
 * 自动增加bootstrap风格分页方式增加了跳转页数,一定要与dataTables结合使用
 * @author:abler
 * @date 2022/05/09
 * 
 */

/* Default class modification */

$.extend($.fn.dataTableExt.oStdClasses, {

    "sWrapper": "dataTables_wrapper form-inline"

});

/* API method to get paging information */

$.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) {

    return {

        "iStart": oSettings._iDisplayStart,

        "iEnd": oSettings.fnDisplayEnd(),

        "iLength": oSettings._iDisplayLength,

        "iTotal": oSettings.fnRecordsTotal(),

        "iFilteredTotal": oSettings.fnRecordsDisplay(),

        "iPage": Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength),

        "iTotalPages": Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)

    };

};


/* Bootstrap style pagination control */

$.extend($.fn.dataTableExt.oPagination, {

    "bootstrap": {

        "fnInit": function (oSettings, nPaging, fnDraw) {

            var oLang = oSettings.oLanguage.oPaginate;

            var fnClickHandler = function (e) {

                e.preventDefault();

                if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {

                    fnDraw(oSettings);

                }

            };

            // console.log($(nPaging));
            $(nPaging).append(

                '<ul class="pagination">' +

                '<li class="first disabled" style="display:none;"><a href="#">' + oLang.sFirst + '</a></li>' +

                '<li class="prev disabled"><a href="#">' + oLang.sPrevious + '</a></li>' +

                '<li class="next disabled"><a href="#">' + oLang.sNext + '</a></li>' +

                '<li class="last disabled" style="display:none;"><a href="#">' + oLang.sLast + '</a></li>' +

                '<span style="margin-left:10px;"> 跳转 <input type="text" id="redirect" class="form-control redirect" style="width:10%;"> 页 </span>' +

                '</ul>'

            );

            console.log($(nPaging));

            //datatables分页跳转

            $(nPaging).find(".redirect").keyup(function (e) {

                var ipage = parseInt($(this).val());

                var oPaging = oSettings.oInstance.fnPagingInfo();

                var timer = null;

                if (isNaN(ipage) || ipage < 1) {

                    ipage = 1;

                } else if (ipage > oPaging.iTotalPages) {

                    ipage = oPaging.iTotalPages;

                }

                $(this).val(ipage);

                ipage--;

                oSettings._iDisplayStart = ipage * oPaging.iLength;



                clearTimeout(timer);

                timer = setTimeout(function () {

                    fnDraw(oSettings);

                }, 600);

            });



            var els = $('a', nPaging);

            $(els[0]).bind('click.DT', {

                action: "first"

            }, fnClickHandler);

            $(els[1]).bind('click.DT', {

                action: "previous"

            }, fnClickHandler);

            $(els[2]).bind('click.DT', {

                action: "next"

            }, fnClickHandler);

            $(els[3]).bind('click.DT', {

                action: "last"

            }, fnClickHandler);

        },



        "fnUpdate": function (oSettings, fnDraw) {

            var iListLength = 5;

            var oPaging = oSettings.oInstance.fnPagingInfo();

            var an = oSettings.aanFeatures.p;

            var i, ien, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2);



            if (oPaging.iTotalPages < iListLength) {

                iStart = 1;

                iEnd = oPaging.iTotalPages;

            }

            else if (oPaging.iPage <= iHalf) {

                iStart = 1;

                iEnd = iListLength;

            } else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) {

                iStart = oPaging.iTotalPages - iListLength + 1;

                iEnd = oPaging.iTotalPages;

            } else {

                iStart = oPaging.iPage - iHalf + 1;

                iEnd = iStart + iListLength - 1;

            }



            for (i = 0, ien = an.length; i < ien; i++) {

                // Remove the middle elements

                ($('li:gt(1)', an[i]).filter(':not(:last)')).filter(':not(:last)').remove();



                // Add the new list items and their event handlers

                for (j = iStart; j <= iEnd; j++) {

                    sClass = (j == oPaging.iPage + 1) ? 'class="active"' : '';

                    $('<li ' + sClass + '><a href="#">' + j + '</a></li>')

                        .insertBefore($('.next', an[i])[0])

                        .bind('click', function (e) {

                            e.preventDefault();

                            oSettings._iDisplayStart = (parseInt($('a', this).text(), 10) - 1) * oPaging.iLength;

                            fnDraw(oSettings);

                        });

                }

                // Add / remove disabled classes from the static elements

                if (oPaging.iPage === 0) {

                    $('li:lt(2)', an[i]).addClass('disabled');

                } else {

                    $('li:lt(2)', an[i]).removeClass('disabled');

                }



                if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) {

                    $('.next', an[i]).addClass('disabled');

                    $('li:last', an[i]).addClass('disabled');

                } else {

                    $('.next', an[i]).removeClass('disabled');

                    $('li:last', an[i]).removeClass('disabled');

                }

            }

        }

    }

});

/*

* TableTools Bootstrap compatibility

* Required TableTools 2.1+

*/

if ($.fn.DataTable.TableTools) {

    // Set the classes that TableTools uses to something suitable for Bootstrap

    $.extend(true, $.fn.DataTable.TableTools.classes, {

        "container": "DTTT btn-group",

        "buttons": {

            "normal": "btn",

            "disabled": "disabled"

        },

        "collection": {

            "container": "DTTT_dropdown dropdown-menu",

            "buttons": {

                "normal": "",

                "disabled": "disabled"

            }

        },

        "print": {

            "info": "DTTT_print_info modal"

        },

        "select": {

            "row": "active"

        }

    });

}

引用上述的js 然后再dataTables的插件主题上填写 ‘bootstrap’, 如下图所示

在这里插入图片描述
最后所呈现的效果如下图所示
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jq datatable 是一个非常流行的 jQuery 表格插件,它可以快速方便地实现表格的排序、搜索、分页等功能。而在实际开发中,我们可能需要动态地传递参数来进行分页,使得表格能够根据具体情况显示不同的数据。为了实现这个需求,我们需要采取以下步骤: 1、配置 datatable 的参数 在初始化 datatable 时,我们需要设置一些参数,包括数据源、列信息、分页等。在处理动态分页时,我们需要特别设置以下几个参数: ①sPaginationType:分页类型,由于我们需要进行动态分页,所以可以设置为 simple_numbers(只显示数字,没有上一、下一等按钮)。 ②iDisplayLength:每显示多少条数据,这个参数可以动态传入,因此可以暂时设置成一个默认值。 ③iDisplayStart:从第几条数据开始显示,这个参数也可以动态传入,因此可以暂时设置成 0。 2、更新 datatable分页信息 当我们需要更新表格的分页信息时,可以使用 API 中的 fnSettings() 方法获取当前 datatable 的配置参数,并对其进行修改即可。具体步骤如下: ①使用 fnSettings() 方法获取 datatable 的配置参数。 var settings = $("#example").dataTable().fnSettings(); ②根据需要修改 iDisplayLength 和 iDisplayStart 两个参数。 settings._iDisplayLength = pageSize; // 每显示条数 settings._iDisplayStart = start; // 起始位置 ③更新表格中的数据。 $("#example").dataTable().fnDraw(); 通过以上步骤,我们就可以实现动态传递参数来进行 datatable分页操作,实现了更加灵活的数据处理需求。当然,在实际应用中,还需要注意一些细节问题,比如数据量较大时可能会出现性能问题,需要注意代码的优化等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值