【问题标题】:Checking if datatable is empty检查数据表是否为空
【发布时间】:2012-11-25 12:11:43
【问题描述】:

我尝试构建一个同时是 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”的“类”是否合适?

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

【问题讨论】:

标签: jquery datatable


【解决方案1】:

如何知道Datatable是否为空

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

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

【讨论】:

    【解决方案2】:

    您还可以使用 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");
    

    【讨论】:

      【解决方案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 答案,而不是发布一个相同但有编辑的新答案,下次思考;)
      【解决方案4】:

      来自forum,这可能是您正在寻找的:

      table.fnSettings().aoData.length
      

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

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

      【讨论】:

      • 相当老的答案,所以如果它不起作用请评论
      猜你喜欢
      • 2017-02-20
      • 1970-01-01
      • 2021-03-08
      • 2017-11-15
      • 2014-04-15
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      相关资源
      最近更新 更多