zoukankan      html  css  js  c++  java
  • 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");
    			}
    		}
    	}
    
  • 相关阅读:
    django如何给上传的图片重命名(给上传文件重命名)
    Nginx 常见问题解决
    nginx 出现413 Request Entity Too Large问题的解决方法
    python判断一个对象是否可迭代
    InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClas...
    Android Studio中新建和引用assets文件
    android 登录效果
    Android (争取做到)最全的底部导航栏实现方法
    抽屉效果的导航菜单
    Android开发之自定义局部导航菜单
  • 原文地址:https://www.cnblogs.com/luckyflower/p/6932226.html
Copyright © 2011-2022 走看看