6

我尝试构建一个同时是 JQuery 树表和 JQuery 数据表的表。请注意,我的问题不在于如何同时使用它,如果我填写“表格”,我可以毫无问题地查看。

但是当我将一个空数组发送到我的树表构建代码时,我得到了错误。

以下是问题行:

$('#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”的“类”是否合适?

或者如果表为空,是否有任何其他方法可以不通过上述循环。

4

4 回答 4

12

如何知道 Datatable 是否为空

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

if ( ! table.data().any() ) {
    alert( 'Empty table' );
}
于 2017-07-25T22:57:49.640 回答
6

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

    //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");
于 2016-06-14T22:39:03.203 回答
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>

于 2017-04-06T15:03:42.387 回答
1

论坛这可能是您正在寻找的:

table.fnSettings().aoData.length

为您提供表中数据的长度。因此,如果它等于 0,则没有数据。

    if(table.fnSettings().aoData.length===0) {
        alert('no data');
    } else {
        alert('data exists!');
    }
于 2015-05-18T08:44:03.897 回答