列数据
从行数据对象/数组中设置列的数据源。
说明
此属性可用于读写任何数据源属性,包括深度嵌套对象/属性。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 从源对象读取数据的方式
.
- Javascript 点号表示法。正如你在 Javascript 中使用.
从嵌套对象中读取一样,在data
中指定的选项也是如此。例如:browser.version
或browser.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 请求的不同数据类型使用不同的数据(
filter
、display
、type
或sort
)。该对象的属性名称是属性所引用的数据类型,并且可以使用整数、字符串或函数(使用与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 调用,因为假定数据已经采用所需格式。
- 参数
名称 类型 可选 1 row
否 整行的数据
2 type
否 为单元格请求的数据类型。预定义的类型是
filter
、display
、type
或sort
。3 set
任何
否 如果
type
参数是set
,则设置值。否则,undefined
。4 meta
否 自 1.10.1 起:一个包含有关请求的单元格的更多信息的对象。此对象包含以下属性
row
- 所请求单元格的行索引。请参阅row().index()
。col
- 所请求单元格的列索引。请参阅column().index()
。settings
- 正在讨论的表的DataTables.Settings
对象。如有需要,可用于获取一个 API 实例。
- 返回
当调用类型为 '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[, ]'
}
]
});
相关
以下选项直接相关,在您的应用程序开发中也可能有用。