{hero}

列数据

自:DataTables 1.10

从行数据对象/数组中设置列的数据源。

说明

此属性可用于读写任何数据源属性,包括深度嵌套对象/属性。data 可以通过多种不同的方式提供,这些方式会影响其行为,如下所述。

DataTables 将为请求的数据解决数据点的数据(在此选项和 columns.render 之间),有三种特殊情况

  • undefined - 与不存在的情况相同!
  • null - 如果使用了 columns.render,则传递给呈现函数的数据将是该行的原始数据源。如果没有呈现器,则 columns.defaultContent 值将被使用。如果没有指定默认内容,则对于显示数据,将使用该行的源对象;null 将用于所有其他数据类型。
  • function - 将执行该函数,并使用返回值。自 DataTables 1.10.1 以来,该函数将在与行的 data 对象相同的范围内执行。这样做的结果是,对象实例可用作行的 data 源。

自 DataTables 2 起,已解决的数据可以是 DOM 节点。在使用自身生成 DOM 节点的外部框架时,这非常有用。在这种情况下,请不要使用 DataTables columns.render 选项来定制单元格内容 - 而是在一开始创建单元格时进行定制。

请注意,data 既是 getter 选项,也是 setter 选项。如果您只需要输出数据的格式化,您可能需要使用 columns.render,它仅仅是一个 getter,因此使用起来要简单得多!

自 DataTables 1.10.3 起,此选项可以与 DOM 源数据一起使用,以指示 DataTables 将为每一列读取的数据写入数据源对象中的何处。默认情况下,DataTables 将把数据存储在数组中,但使用此选项,您可以提供描述要使用的对象的结构的对象属性名称(示例)。

类型

整数

说明

被视为数据源的数组索引。这是 DataTables 使用的默认值(针对每一列递增)。

字符串

说明

从数据源读写对象的属性。有三个“特殊”选项可用于字符串中,以改变 DataTables 从源对象读取数据的方式

  • . - Javascript 点号表示法。正如你在 Javascript 中使用 . 从嵌套对象中读取一样,在 data 中指定的选项也是如此。例如:browser.versionbrowser.name。如果你的对象参数名称包含一个句点,请使用 \\ 转义它 - 即 first\\.name
  • [] - 数组表示法。DataTables 可以自动组合来自数组源的数据,将数据与两个方括号之间提供的字符连接起来。例如:name[, ] 将从源数组中提供一个以逗号空格分隔的列表。如果方括号之间未提供字符,则返回原始数组源。
  • () - 函数表示法。在参数末尾添加 () 将执行给定名称的函数。例如:数据源上的简单函数 browser(),嵌套属性中的函数 browser.version(),甚至 browser().version 以获取对象属性(如果调用的函数返回一个对象)。请注意,建议在 render 中使用函数表示法,而不是在 data 中,因为它作为渲染器使用起来简单得多。

null

说明

使用原始数据源作为行,而不是直接从中获取数据。此操作对其他两个初始化选项有影响

  • columns.defaultContent - data 选项被指定为 null,并且为该列指定了 defaultContent 时,将为单元格使用由 defaultContent 定义的值。
  • columns.render - 当将 data 选项设置为 null,并且为该列指定了 render 选项时,该行的整个数据源将用于渲染器。

object

说明

为 DataTables 请求的不同数据类型使用不同的数据(filterdisplaytypesort)。该对象的属性名称是属性所引用的数据类型,并且可以使用整数、字符串或函数(使用与 columns.data 通常所做的相同的规则)来定义该值。请注意,必须指定 _ 选项。如果没有为 DataTables 请求的数据类型指定值,这是要使用的默认值。

例如,你可以使用

"data": {
    "_": "phone",
    "filter": "phone_filter",
    "display": "phone_display"
}

function data( row, type, set, meta )

说明

每当 DataTables 需要设置或获取列中单元格的数据时,都会执行给定的函数。

此函数可能会被调用多次,因为 DataTables 会为其所需的不同数据类型(排序、过滤和显示)调用它。

请注意,只有当从 DOM 读取行的数据时(即在预填充的 HTML 表上初始化该表),DataTables 才会将该函数作为 setter 调用,当行添加到其中时。当数据是从 Javascript 或 Ajax 中获取时,该函数不会被作为 setter 调用,因为假定数据已经采用所需格式。

参数
返回

当调用类型为 'set' 时,函数的返回值不是必需的,否则返回的将用于所请求的数据。

默认

自动获取列的索引值

示例

从对象中读取表数据

// JSON structure for each row in this example:
//   {
//      "engine": {value},
//      "browser": {value},
//      "platform": {value},
//      "version": {value},
//      "grade": {value}
//   }
new DataTable('#myTable', {
	ajaxSource: 'sources/objects.txt',
	columns: [
		{ data: 'engine' },
		{ data: 'browser' },
		{ data: 'platform' },
		{ data: 'version' },
		{ data: 'grade' }
	]
});

从深度嵌套对象中读取信息

// JSON structure for each row:
//   {
//      "engine": {value},
//      "browser": {value},
//      "platform": {
//         "inner": {value}
//      },
//      "details": [
//         {value}, {value}
//      ]
//   }
new DataTable('#myTable', {
	ajaxSource: 'sources/deep.txt',
	columns: [
		{ data: 'engine' },
		{ data: 'browser' },
		{ data: 'platform.inner' },
		{ data: 'details.0' },
		{ data: 'details.1' }
	]
});

将 DOM 来源的表读入数据对象

$(document).ready(function () {
	$('#example').DataTable({
		columns: [
			{ data: 'name' },
			{ data: 'position' },
			{ data: 'office' },
			{ data: 'age' },
			{ data: 'start_date' },
			{ data: 'salary' }
		]
	});
});

使用 data 作为函数,为排序、过滤和显示提供不同信息。在本例中,使用货币(价格)

new DataTable('#myTable', {
	columnDefs: [
		{
			targets: 0,
			data: function (row, type, val, meta) {
				if (type === 'set') {
					row.price = val;
					// Store the computed display and filter values for efficiency
					row.price_display = val == '' ? '' : '$' + numberFormat(val);
					row.price_filter =
						val == '' ? '' : '$' + numberFormat(val) + ' ' + val;
					return;
				}
				else if (type === 'display') {
					return row.price_display;
				}
				else if (type === 'filter') {
					return row.price_filter;
				}
				// 'sort', 'type' and undefined all just use the integer
				return row.price;
			}
		}
	]
});

使用默认内容

new DataTable('#myTable', {
	columnDefs: [
		{
			targets: [0],
			data: null,
			defaultContent: 'Click to edit'
		}
	]
});

使用数组表示法 - 从数组输出一个列表

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

相关

以下选项直接相关,在您的应用程序开发中也可能有用。