所以我有datatables让名称表是reportpr
,然后我在这些表上有jquery(用ajax& json重新加载)
在这里我的代码:
var table = $('#reportpr');
var target = table.attr('data-table');
var tblDetail = table.attr('data-detail');
var oTable = table.on( 'processing.dt', function ( e, settings, processing ){
if (processing) {
$(this).find('tbody').addClass('load1 csspinner');
} else{
$(this).find('tbody').removeClass('load1 csspinner');
};
}).DataTable({
"bServerSide": true,
"dom": 'Bfrtip',
"buttons": [
'excelHtml5'
],
"scrollX": true,
"scrollY": "200px",
"scrollCollapse": true,
"iDisplayLength": 10,
"ajax": {
"url" : url+"datatable",
"type": "POST",
"data" :{
title: target
},
}
});
它是显示我的数据的工作,但我的问题是我如何检查这些表是否有数据或空(没有数据)。
我在这些选项上尝试了很多东西,比如$("reportpr").DataTable().rows().count();
或$("reportpr").DataTable().page.info();
但仍然无法正常工作,任何人都建议???我只需要检查我的表是否有数据。
编辑:
我编辑了我的问题 我想制作另一个偶数触发器,所以不要在数据表上显示masaage,比如
if(datatable is empty)
{
button it will enable
}
else
{
button is will disabled
}
更新:我尝试将我的版本DataTables从版本1.10.5更新为1.10.16,并尝试使用$("reportpr").DataTable().data().any();
或$("reportpr").DataTable().rows().count();
,仍然无法正常工作,当该表有数据时我说不有数据或空数据。请继续帮助这些事情。
答案 0 :(得分:0)
你可以使用any()函数。
var table = $('#example').DataTable();
if ( ! table.data().any() ) {
alert( 'Empty table' );
}
答案 1 :(得分:0)
可能最简单的方法是计算行数 - 如果为空则为0:
table.rows().count()
答案 2 :(得分:0)
您可以使用fnGetData
来确定表格是否包含数据。
$(document).ready(function() {
var table = $('#maintable').dataTable();
// Get the table's data.
var data = table.fnGetData();
// Check the data array length.
if(data.length==0){
console.log("Table is empty");
}else{
console.log("Table has "+data.length+ " rows.")
}
});

#tableWrapper{
width:90%;
margin: 0 auto;
}
table{
margin: 0 auto;
}

<link href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.16/css/dataTables.jqueryui.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.16/js/jquery.dataTables.min.js"></script>
<div id="tableWrapper">
<table id="maintable">
<thead>
<tr>
<th>
test1
</th>
<th>
test2
</th>
<th>
test3
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
&#13;
在此CodePen中是2个数据行的相同示例。
答案 3 :(得分:0)
对于服务器端,最好的方法是使用Datatable drawCallBack功能,如下所示:
$('#example').dataTable( {
serverSide: true,
ajax: 'https://dog.ceo/api/breeds/list/all',
columns: [
{
data: ""
},
{
data: ""
}
],
"drawCallback": function( settings ) {
var rows = this.fnGetData();
if (rows.length === 0 ) {
}else{
}
}
} );