{hero}

columnDefs

自 DataTables 1.10 起

设置列定义初始化属性。

描述

columns 非常类似,这个参数允许您为表中的列分配特定选项,但这种情况中定义的列选项可以应用到一列或多列。此外,不必指定每一列,这与 columns 不同。

此参数是列定义对象的数组,其中可用选项与 columns 的选项完全匹配(见关联链接中的选项清单)。

除了列属性选项之外,columnDefs 要求在每个定义对象(columnDefs.targets)中设置 targets 属性。此 targets 属性告诉 DataTables 定义应应用于哪一列或多列。它可以是

  • 0 或一个正整数,列索引从左开始计数
  • 一个负整数,列索引从右开始计数
  • 一个 CSS 选择器,将使用与该选择器匹配的列(自 2.0 起)
  • 字符串 _all,所有列(即分配一个默认值)
  • 一个仅包含字母、数字、下划线和破折号的字符串(作为正则表达式的 /^[a-z][\w-]*$/i),一个类名匹配。请注意,此选项是为了向后兼容 DataTables 1.x 而提供的。这意味着您不能将元素名称作为选择器使用,但无论如何,在页眉中这将限定为 thtd

此外,targets 既可以是从上述清单中选出的一个选项,也可以是一个选项数组(必要时可以在数组中混合不同类型)。例如,targets: [ -1, -2 ] 将以表中的最后一列和倒数第二列为目标。

冲突解决

由于 columnDefs 允许在不同的列定义对象中多次定义列(通常为了定义多列的不同方面),因此可能会出现冲突。即,对于同一列,一个单一属性可能会定义为不同的值。同样,当同时使用 columns 时也可能会出现这种情况。DataTables 使用以下规则来解决此类冲突

  1. columns 中定义的属性将始终优先于在 columnDefs 中定义的该属性的任意值。
  2. columnDefs 数组中靠前的属性将优先于靠后的属性。

例如,考虑以下表格

var table = $('#myTable').DataTable( {
    columnDefs: [
        { targets: [0, 1], visible: true},
        { targets: '_all', visible: false }
    ]
} );

表中将显示第一和第二列,而所有其他列都将隐藏。

类型

该选项可以采用以下类型

示例

禁用第一列上的筛选

new DataTable('#myTable', {
	columnDefs: [
		{
			targets: 0,
			searchable: false
		}
	]
});

相关

以下选项直接相关,并且对你的应用程序开发也可能有用。