Jquery DataTables 列 columns 和 columnDefs基本使用
columns 和 columnDefs的区别:
相同点:达到相同的效果
不同点:作用不一样,使用不一样(需要一个目标属性在每个定义的对象(columnDefs.targetsDT))
-
columns:设置特定列的初始化属性,可以定义数组设置多列,数组长度必须等于表格的数量,只想使用默认值可以设为“NULL”,数组每个元素只能设置单列的属性。
-
columnDefs:与columns非常相似,该数组可以针对特定的列,多列或者所有列定义。数组可以任意长度。通过targets参数设置一个列或者多列,该属性定义可以如下:
0或正整数 - 从左边的列索引计数
负整数 - 列索引从右边计数
一个字符串 - 类名称将被匹配上的TH为列
字符串“_all” - 所有的列(即指定一个默认值)
两个参数可以同时使用,但是columns定义的优先级最高。
当columnDefs里对同一列有多个定义时,最开始的定义优先级最高
补充一下,
datatable出现Cannot read property ‘length’ of undefined 这个错误的话,绝大多数是由于columns中列设置出现了问题,或者是JSON返回的数据格式出现了问题,因为数组长度必须等于表格的数量,里面一般是:
"columns": [{"mData": "ID"},
{"mData": "name"},
null
],
即使有的列不设置,也必须天内各国null来补全。
{}中的内容,"mDate"的内容是JSON数据中对应的属性名字。是设置数据,当然也可用其他的键值对来设置其他属性,中间用逗号隔开。