有没有办法从 jquery 数据表(jquery数据表 1.9)中删除过滤行?
Is there a way to delete filtered rows from jquery datatable (jquerydatatable 1.9)?
这是我的代码:
var companyTable =$('#companyTable').dataTable();
var filteredRows = companyTable._('tr', {"filter":"applied"})
filteredRows.forEach(function(item) {
$('#companyTable').dataTable().fnDeleteRow(item);
});
它被删除了所有行,但最后一行被留下,它显示错误,如 Uncaught TypeError: Cannot read 属性 'nTr' of undefined,有人可以帮助我吗。
问题终于解决了
var companyTable =$('#companyTable').dataTable();
//get all nodes of the datatable it returns all rows
var allNodes = companyTable.fnGetNodes();
//get filtered rows of datatable
var filteredRows = companyTable._('tr', {"filter":"applied"});
var filteredArray= [];
for(var i=0;i<filteredRows.length;i++) {
var item = filteredRows[i];
//am using some column to compare both
var column= item[1];
filteredArray.push(column);
}
for (var i=0;i<allNodes.length;i++){
var rowData = allNodes[i];
var columnData= $(rowData).find('td:eq(0)').text();
//if the node is in filtered data remove it..
if(jQuery.inArray( columnData, filteredArray) != -1 ){
//here i am removing the row
var rowData = companyTable.fnDeleteRow(rowData);
}
}
您可以使用更简单的解决方案。
选择行时,使用 { filter : 'applied'}
.
所以你的情况是:
companyTable.rows({ filter : 'applied'}).remove().draw();
这是我的代码:
var companyTable =$('#companyTable').dataTable();
var filteredRows = companyTable._('tr', {"filter":"applied"})
filteredRows.forEach(function(item) {
$('#companyTable').dataTable().fnDeleteRow(item);
});
它被删除了所有行,但最后一行被留下,它显示错误,如 Uncaught TypeError: Cannot read 属性 'nTr' of undefined,有人可以帮助我吗。
问题终于解决了
var companyTable =$('#companyTable').dataTable();
//get all nodes of the datatable it returns all rows
var allNodes = companyTable.fnGetNodes();
//get filtered rows of datatable
var filteredRows = companyTable._('tr', {"filter":"applied"});
var filteredArray= [];
for(var i=0;i<filteredRows.length;i++) {
var item = filteredRows[i];
//am using some column to compare both
var column= item[1];
filteredArray.push(column);
}
for (var i=0;i<allNodes.length;i++){
var rowData = allNodes[i];
var columnData= $(rowData).find('td:eq(0)').text();
//if the node is in filtered data remove it..
if(jQuery.inArray( columnData, filteredArray) != -1 ){
//here i am removing the row
var rowData = companyTable.fnDeleteRow(rowData);
}
}
您可以使用更简单的解决方案。
选择行时,使用 { filter : 'applied'}
.
所以你的情况是:
companyTable.rows({ filter : 'applied'}).remove().draw();