检查数据表是否有数据

时间:2018-04-03 02:43:08

标签: jquery datatables

所以我有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();,仍然无法正常工作,当该表有数据时我说不有数据或空数据。请继续帮助这些事情。

4 个答案:

答案 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;
&#13;
&#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{

        }    
    }
} );