datatables使用学习

最近在做pc端网页开发时用到了datatables,不得不说这个工具使用还是很方便的。(ps:大数据量时建议使用服务器端分页而非前端分页)

现将相关配置使用记录如下

配置

var table = $("#table").DataTable({
        "ajax": {
            url: "/getusr/",
            type: "POST",
            data: function (d) {
                d.group = $(".group")[0].innerText;//ajax传递参数
            },
             "dataSrc": function (data) {
                    return data.data1;//作用同sAjaxDataProp
            }
        },
        "columns": [{"data": "name"},
            {"data": "id"},
            {"data": "pass"}],
        "searching": true,
        "ordering": false,//是否排序,否时直接根据数组顺序显示
        "paging": true,
        "sAjaxDataProp": "data1",//取ajax返回的结果中的data1字段
        "info": true,
        "autoWidth": true,//自动调整宽度
        "scrollX": true,
        "sScrollX": "100%",
        "bLengthChange": false, //hide the "show 10 entries"
                           
        "fixedColumns": 
            {leftColumns: 2, bAll: true,"sHeightMatch":"auto"},
             //左侧边栏多少个列固定在左边。需要引入第三方插件dataTables.fixedC
             olumns.js
        "fnDrawCallback": function (oSettings) {
            //重绘回调函数
            $(".select").msDropDown();
        },
        "dom": 'Blfrtip',
                   //新增的buttons比如excel下载,按需引入extensions/Buttons/1.3.1/js/dataTables.buttons.min.js、
                   buttons.flash.min.js、but tons.html5.min.js、buttons.print.min.js. Blfrtip中的l代表引入pagelength的select
        "buttons": [{
                extend: 'excel'//支持图片,pdf等下载.
                },
               {
                    extend: 'excelHtml5',
                    title: function getFileName(){ //动态设置下载的excel文件名称.不想动态的话直接写一个字符串用作filename即可'mytable'
                        return $("#name").text();
                    },
                    className: 'btn-excel',
                    exportOptions:{"columns":view=="1"?".view1":".view2"},//通过columns设置定制excel下载的行或者列,exportoptions支持多种写法,此处使用的jQuery的写法。(具体详情参见)[https://datatables.net/reference/button/excel]
                    footer: true
                }
        ],
        "columnDefs": [
            {
                "targets": [0],
                "width": "30%",
                "className": "j-thead0",
                "render": function (data) {
                    return "<div><a>" + data + "</a></div>";
                }
            }
        ]
    });

常用api

table.relayout();//显示table区域的大小发生改变时(eg:window resize... ) 可调用其布局函数

table.fixedColumns().relayout();//在使用了fixedcolumns时,当table relayout后有时候也需要手动将fixedcolumns 进行relayout

table.ajax.reload();//根据筛选条件重新发起ajax请求,reload table

var column = table.column(index);//针对index列进行隐藏or显示,适用于datatables过长时不同view mode下列的显示
column.visible(false);

附加功能添加

向上滚动页面,当datatables表头接触到window顶部将其固定,实现代码如下:

1、给document绑定滚动事件

document.addEventListener("scroll",handleHeader);//

2、滚动到顶部,clone header且fixed,否则将其hide or delete(datatbles 发生布局上任何改变该clone生成的header要进行删除更新,否则header对不上,o(╯□╰)o)

function handleHeader(){

		var normalHeader = $(".normalHeader");
		var dataTables_scroll = $(".dataTables_scroll");//生成的datatablediv
		var DTFC_LeftWrapper = $(".DTFC_LeftWrapper");//fixedColumns 生成的左边两个固定columns

		if((normalHeader.offset().top-$(window).scrollTop())<5){

			if(!headerCreated){
				newHeader = dataTables_scroll.clone().addClass("fixedHeader newHeader");
				newLeft = DTFC_LeftWrapper.clone().addClass("fixedLeft newLeft");

				$(newHeader).find(".dataTables_scrollBody").css("display","none");
				$(newLeft).find(".DTFC_LeftBodyWrapper").css("display","none");

				var scrollWidth = dataTables_scroll.width();
				newHeader.css("width",scrollWidth);
				newLeft.css("left","");

				newHeader.appendTo( ".DTFC_ScrollWrapper" );
				newLeft.appendTo( ".DTFC_ScrollWrapper" );

				headerCreated = true;
			}else{
				newHeader.removeClass("hidden");
				newLeft.removeClass("hidden");
			}
		}else{
			if(newHeader||newLeft){
				newHeader.addClass("hidden");
				newLeft.addClass("hidden");
			}
		}
	}
posted @ 2017-06-02 10:57  testForever  阅读(2496)  评论(0编辑  收藏  举报