如何使用datables迭代选定的行+选择扩展名

时间:2018-03-14 16:57:17

标签: datatables

我使用select扩展名并尝试使用所选行的ID来“警告”。

以下代码失败:

let sels = jqTable.api().rows({ selected: true });
let st = '';
sels.each(function (value, index) {
    st += ',' + sels.row(value).id();
});
alert(st);

该函数独立于所选行调用一次:

  • 0行:value = [], index = 0
  • > = 1:value = [0, 2], index = 0

以下代码成功:

let sels = jqTable.api().rows({ selected: true });
let st = '';
for (let i = 0; i < sels.count(); i++) {
    st += ',' + sels.row(sels[0][i]).id();
}
alert(st);

我对each()

的理解是什么?
  

迭代API结果集的内容。

我注意到以下代码运行:

sels.data().each(function (value, index) {
    st += ',' + value.IdFile;
});

但是使用它取消了数据表配置中rowId : 'IdFile'的优势。

1 个答案:

答案 0 :(得分:1)

当数据集在API对象中返回结果数组时使用

each() - 在rows()的情况下,这不是情况 - 它返回单个结果,这恰好发生在是一个包含所选行的rowID的数组。

您的第一个代码块失败,因为只有一次迭代(结果是单个数组)。

您的第二个块有效,因为您正在迭代该单个数组(sels[0])。

并且你的第三个也可以工作,因为rows().data()确实生成了一个包含所有选定行数据的数组。

example希望有所帮助!