6

JQuery treeTable と 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

6

このstackoverflow postで説明されているように、page.info() を使用して dataTable が空かどうかを確認することもできます。例えば。

    //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 に答える