检查 datatable 是否为空

6
我试图构建一个既是JQuery treeTable又是JQuery datatable的表格。 请注意,我的问题不是如何同时使用它们,如果我填充了“table”,我可以正常查看。 但是当我向我的treetable构建代码发送一个空数组时,我会收到错误信息。 以下是有问题的行:
$('#table tbody tr').each(function(){
                        console.log(this);
                        if(mytable.fnGetData(mytable.fnGetPosition(this))[4]){
                            console.log('in set child before');
                            $(this).addClass('child-of-'+mytable.fnGetData(mytable.fnGetPosition(this))[4]);
                            console.log('in set child after');
                        }
                        $(this).attr('id', mytable.fnGetData(mytable.fnGetPosition(this))[0]);
                    });

当我没有填充表格时,尽管我希望如此,但该过程仍会通过上述循环,并且console.log(this)输出:
<tr class="odd"><td valign="top" colspan="4" class="dataTables_empty">No data available in table</td></tr>

所以它会生成错误,因为行数据不是预期的。

我想问一下,控制是否为填充数据或空警告行的最优雅方法是什么?检查“dataTables_empty”类是否为适当的方法?

还是有其他方法可以避免在表为空时不必进行上述循环。


可能是重复的问题 https://dev59.com/ZF7Va4cB1Zd3GeqPKYFM - Rafael Herscovici
如何防止jQuery DataTable插件在没有数据时添加行和消息? - Rafael Herscovici
1
我希望在表格为空时出现一个空消息,但也想检查它是否为空。无论如何,我正在使用 $(this).find(td:first).hasClass('dataTables_empty')。谢谢。 - merveotesi
4个回答

12

如何判断Datatable是否为空

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

if ( ! table.data().any() ) {
    alert( 'Empty table' );
}

6

您还可以使用page.info()来检查dataTable是否为空,如此stackoverflow帖子所述。

    //gives the total number of filtered records
    var totalDisplayRecord = $(".dTable").DataTable().page.info().recordsDisplay
(totalDisplayRecord === 0)? alert("table is empty") : alert("table is not empty");

或者

//gives the total number of records in table
var totalRecords =$(".dTable").DataTable().page.info().recordsTotal;
//test if dataTable is empty
(totalRecords === 0)? alert("table is empty") : alert("table is not empty");

3

另一种方法

var count = $("table.dTable").dataTable().fnSettings().aoData.length;
if (count == 0)
{
   alert("Please enter the Data");
}else{
   alert("Table contains " + count + ' rows');
}
<table class="dTable"></table>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.16/js/jquery.dataTables.min.js"></script>


下次可以考虑直接编辑@elad silver的答案,而不是发布一个相同但带有编辑器的新答案,留待参考。 - elad silver

1

论坛得知,这可能是你正在寻找的内容:

table.fnSettings().aoData.length

给出了表中数据的长度。因此,如果长度为0,则表示没有数据。

    if(table.fnSettings().aoData.length===0) {
        alert('no data');
    } else {
        alert('data exists!');
    }

非常老的答案,请在评论中说明它是否有效。 - elad silver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接