Datatables表格固定列 dataTable.fixedColumns.js的使用和修复 - 完美解决ICheck不能勾选问题

前言

在项目实际开发我们会遇到表格列过多,表格内容过长的困扰,表格数据的展现很不理想,今天我为大家介绍如何结合Datatables 使用表格固定列;

效果展示

1、在屏幕足以展现内容的情况下
Datatables表格固定列 dataTable.fixedColumns.js的使用和修复 - 完美解决ICheck不能勾选问题_第1张图片
2、模拟屏幕过小 或表格列过多的情况
Datatables表格固定列 dataTable.fixedColumns.js的使用和修复 - 完美解决ICheck不能勾选问题_第2张图片
从效果图可以看出,我将左侧两列和右侧一列 作为固定列 ,中间内容可拖动显示

开始使用

//引入juqery datables fixedColumns 根据各自的样式需求 本人使用的是bootstrap 





初始化datatables

//异步请求获取表格渲染数据
var dataTable;
$(function () {
	dataTable = $('#表格ID')..DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": {url:  "您的请求URL"},
            "scrollX": true,
            "autoWidth": true,
            "columns": [
            ...
            ]
	});
})

初始化fixedColumns

new $.fn.dataTable.FixedColumns(dataTable,{
    "iLeftColumns":2,  //开启左侧两列固定
    "iRightColumns":1, //开启右侧1列固定
    "drawCallback": function(){
        //重绘的回调执行
    }
});

原理解析

在datableas 初始化后 根据设定的开启固定列,获取datables 对应表格数据 进行复制,然后采用position: absolute 在原表格 上加多一层固定列表格的展现,感兴趣的朋友可以浏览器DEBUG查阅;

出现的问题

1、固定列出现滚动条
Datatables表格固定列 dataTable.fixedColumns.js的使用和修复 - 完美解决ICheck不能勾选问题_第3张图片
出现这个问题是 dataTable.fixedColumns.js 插件计算固定列宽的问题,可以在源码进行修改;或者在fixedColumns.js 重绘成功后回调中执行

$(".DTFC_Cloned").css("width","auto");

2、采用ICheck 插件无法点击 和 勾选问题

原因:因为异步加载数据的问题 ,我们每次在datables重绘的回调函数中 进行ICheck 再次初始化;
而dataTable.fixedColumns.js 是 datables 初始化完成后才执行的 ,上文也提到固定列实现的原理,其复制了固定列数据 position: absolute,那么展现给我们看到的是已经初始化的ICheck ,真正可以勾选点击的其实在下一层;

解决思路:在fixedColumns.js 重绘成功后回调中初始化ICheck; 再重新注册全选 和反选事件;

//朋友们可以根据需求 自定定义自己的初始化和事件注册
new $.fn.dataTable.FixedColumns(dataTable,{
    "iLeftColumns":2,
    "iRightColumns":1,
    "drawCallback": function(){
        //重绘Icheck 这里是我封装的初始化方法
        iCheckInitFunction();
        //重新设置全选事件 这里是我全选/反选的注册事件
        TableiCheck(".DTFC_Cloned thead tr th input.i-checks", ".DTFC_Cloned tbody tr td input.i-checks");
    }
});

修复版的 dataTable.fixedColumns.js 下载

大家可以选择适合自己的样式
Datatables表格固定列 dataTable.fixedColumns.js的使用和修复 - 完美解决ICheck不能勾选问题_第4张图片
dataTable.fixedColumns.js修复文件也已经打包其中,大家可以自行下载;

下载地址:https://download.csdn.net/download/lhmyy521125/12232855

如果在使用该插件过程中有任何问题欢迎留言;

你可能感兴趣的:(JQUERY)