【问题标题】:Get all rows from DataTable including those filtered out从 DataTable 中获取所有行,包括那些被过滤掉的行
【发布时间】:2015-09-28 15:26:54
【问题描述】:

我正在使用出色的 jQuery Datatables 插件。

我有一个简单的表格,其中每一行的第一列是一个带有 .chk-items 类的复选框。

我希望用户能够选择多行,然后对已选中复选框的所有行执行操作。这可能包括选中一个或多个框,使用 SEARCH 工具进行过滤,然后选中其他框。这当然意味着某些被检查的行不再可见(即它们已被过滤掉)。

我目前有以下处理检查的行:

var tableData = new Array([]);
var idx = 0;
$('.chk-items').each(function() {
//Add checked items to next tab
    if($(this).is(':checked')) {
        //Get the selected row data into an array
        var rowData = (this).closest('tr').children("td").map(function() {
            return $(this).text();
        }).get();
        tableData[idx] = rowData;
        idx = idx + 1;
    }
})

但是,当其中一个选中的行被搜索过滤掉时,这不起作用。

任何人都可以建议一种方法来更改它以处理被搜索过滤掉的检查行吗?

【问题讨论】:

  • 行被过滤时会发生什么,他们是否得到一个类来检查。比如 .invisible,.filtered。还是从 dom 中完全删除过滤的项目?
  • 它们可能会,但由于它们在 Firebug 的 DOM 面板中不再可见,因此很难回答。我猜我可以使用 var rows = $("#myTable").dataTable().fnGetNodes(); 之类的东西,但我正在努力让它正常工作。
  • 我认为这些行并没有被完全删除,因为删除过滤器字符串会恢复隐藏的行。

标签: jquery datatables datatables-1.10


【解决方案1】:

解决方案

使用 DataTables API 方法 $() 对整个表执行 jQuery 选择操作。

var table = $('#example').DataTable();

// ... skipped ...

var tableData = [];
table.$('.chk-items').each(function() {
   // Add checked items to next tab
    if($(this).is(':checked')) {
        // Get the selected row data into an array
        var rowData = $(this).closest('tr').children("td").map(function() {
            return $(this).text();
        });

        tableData.push(rowData);
    }
});

演示

有关代码和演示,请参阅this jsFiddle

链接

有关在 jQuery DataTables 中使用复选框的更多信息,请参阅jQuery DataTables - How to add a checkbox column

【讨论】:

  • 谢谢,但这不是很有效。已添加此内容,现在得到 TypeError: a is null ...ce,e)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,e),d.push(b.result)...(从 FireBug 控制台输出复制)。
  • @SiStone,您是否将example 更改为您的餐桌ID?还可以使用未缩小的 DataTables JS 文件来查看错误发生的位置。你能拿出一个小提琴来演示这个错误吗?
  • 是的,我确实将选择器更改为我的表 ID。将尝试未缩小的 JS 文件,但错误来自 jQuery.js 而不是 DataTables。将尝试将小提琴放在一起,但由于表结构,那很繁琐(原文如此)。忍受我...
  • @SiStone,请参阅this jsFiddle 以了解我的解决方案。
  • 好吧,现在感觉自己像个彻头彻尾的笨蛋。已更改选择器但引入了错字...已更正错字,但当我选择行时,在处理所选行的代码中得到undefined 输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
相关资源
最近更新 更多