2016-07-19 14 views
0

Nachdem ich einige Nachforschungen angestellt habe, um eine Lösung zu finden (leider ohne Erfolg), entschied ich, dass es am besten wäre, mein Problem zu posten. Ich habe derzeit ein Datatable, das Asset-Informationen in einer Ansicht enthält, und ich versuche zu verhindern, dass ein Benutzer eine Option in einem Auswahlfeld fortsetzt, bis ein Asset zur Asset-Tabelle hinzugefügt wird.Überprüfen Sie, ob das Datenfeld leer ist, nachdem die Tabelle vollständig geladen ist. JQuery

der folgenden Liste ist mein Vermögen Datentabelle Code in meinem Js unter der document.ready Funktion Datei

assets = $('#assets').dataTable({ 
    sAjaxSource: "http://" + window.location.hostname + "/request/get-request-assets/?id=" + $('#id').val(), 
    fnDrawCallback: function (oSettings) { 
     setIncompleteTD(); 
     enableRequestStatus(); 
    }, 
    scrollY: '185px', 
    scrollCollapse: true, 
    paging: false, 
    aaSorting: [[1, 'asc']], 
    bPaginate: false, 
    bFilter: false, 
    bLengthChange: false, 
    bAutoWidth: false, 
    bInfo: false, 
    aoColumns: [ 
     {sWidth: '35px', bSortable: false}, 
     {sWidth: '40px'}, 
     {}, 
     {}, 
     {}, 
     {}, 
     {}, 
     {sWidth: '80px'} 
    ], 
    language: { 
     sLoadingRecords: '', 
     sEmptyTable: 'This request has no asset records.', 
     sInfoEmpty: '' 
    } 

I table.fnSettings gefunden habe(). AoData.length === 0 als bedeutet zu überprüfen, ob eine Tabelle leer ist. Doch nach (über Chrome Debugger) durch den Code Schritt es Datentabellen (zumindest in meinem Fall) scheint ruft die Funktion, bevor die Tabelle vollständig erzeugt wird ...

Ich habe diesen Code unter

assetPresent = (assets.fnSettings().aoData.length===0) ? false : true; 
console.log(assetPresent); 

in meiner document.ready-Funktion nach $ ('# assets'). dataTable() -Funktion (wenn das wichtig ist). AssetPresent wird als Flag verwendet, um die Statusauswahlbox umzuschalten. Leider, bevor ich kann das nutzen ...

console.log(assetPresent); 

scheint immer auf false gesetzt werden, auch wenn es in der Tabelle deutlich Aufzeichnungen sind, und ...

assetPresent = (assets.fnSettings().aoData.length===0) ? false : true; 

Neigt ignoriert zu werden .. .

Ich bin gespannt, ob table.fnSettings(). AoData.length === 0 möglicherweise nicht die beste Option ist. Vielen Dank im Voraus.

Antwort

0

Haben Sie versucht, table.data(). Länge noch?

+0

ich aber habe, in diesem Fall assetPresent auf true immer gleich ist. Nicht ganz sicher, warum, aber meine Vermutung wäre, dass selbst wenn der Tisch leer ist, semptyTable: 'Diese Anfrage hat keine Asset-Datensätze.' als Zeile in der Tabelle ... – msleone

+0

Es gibt tatsächlich undefined für table.data(). length .. – msleone

+0

Welche Version von Datatables verwenden Sie? Es muss eine alte Version sein ... –

0

können Sie versuchen, diese

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

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