【问题标题】:getting datatables multiple selected rows values as an array将数据表的多个选定行值作为数组获取
【发布时间】:2016-02-01 09:06:05
【问题描述】:

这个问题是关于数据表的,

我正在尝试将多个选定的行值作为数组获取,但不幸的是它仅作为对象出现,

console.log(table.rows({'.selected').data());

 var ids = jQuery.map(table.rows('.selected').data(), function (item) {
    return item[3];
});

console.log(ids);

通过使用此代码,我得到了

[object, object, object,context:array[1]....]
[]

但我不能...

[array, array, array...]
['test','test1']

这有什么问题? 我尝试了以下问题,但我无法获得数组, jQuery DataTables Getting selected row values

【问题讨论】:

    标签: datatables


    【解决方案1】:

    你可以调用 toArray(),我在文档中找不到这个 - 我很绝望,只​​是尝试了一下,它成功了!

    table.rows('.selected').data().toArray()
    

    【讨论】:

    • 谢谢,这很好用。几个小时的搜索,这是我能找到的唯一正确答案。使用更新的语法:table.rows({selected:true}).data().toArray();
    【解决方案2】:

    您是否考虑过使用 dataTables 自己的 every() 迭代器方法?这是一个多选示例,其中选定的行作为字符串数组的数组被控制台输出:

    table.on('select.dt', function() {
       var array = [];
       table.rows('.selected').every(function(rowIdx) {
          array.push(table.row(rowIdx).data())
       })   
       console.log(array);
    })
    

    演示 -> http://jsfiddle.net/0yvm41q7/

    【讨论】:

    • 当您取消选中一个复选框时,该行不会从数组中删除,直到您执行下一次迭代。你有办法避免这种情况吗?
    • @Blawless,上面没有使用任何复选框,array 仅存在于函数范围内。所以你在这里失去了我:)...
    猜你喜欢
    • 2020-12-27
    • 2014-03-26
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多