Weiß jemand bitte, was mit der sehr einfachen HTML-Datei unten falsch ist?
Ich versuche nur, ein Array von Objekten als Datenquelle für DataTables zu verwenden:
tests.html:
<html>
<head>
<link type="text/css" rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">
<link type="text/css" rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.2/css/jquery.dataTables_themeroller.css">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.2/jquery.dataTables.min.js"></script>
<script type="text/javascript">
var data = [
{"Name":"UpdateBootProfile","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]},
{"Name":"NRB Boot","Result":"PASS","ExecutionTime":"00:00:50.5000000","Measurement":[{"TestName":"TOTAL_TURN_ON_TIME","Result":"PASS","Value":"50.5","LowerLimit":"NaN","UpperLimit":"NaN","ComparisonType":"nctLOG","Units":"SECONDS"}]},
{"Name":"NvMgrCommit","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]},
{"Name":"SyncNvToEFS","Result":"PASS","ExecutionTime":"00:00:01.2500000","Measurement":[]}
];
$(function() {
var testsTable = $('#tests').dataTable({
bJQueryUI: true,
aaData: data,
aoColumns: [
{ mData: 'Name' },
{ mData: 'Result' },
{ mData: 'ExecutionTime' }
]
});
});
</script>
</head>
<body>
<table id="tests">
<thead>
<tr>
<th>Name</th>
<th>Result</th>
<th>ExecutionTime</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</body>
</html>
UPDATE: Ok, ich habe die Antwort vom Autor erhalten , eine neuere Version von DataTables zu verwenden oder mData in mDataProp umzubenennen
jquery-datatables
Alexander Farber
quelle
quelle
Antworten:
Sie verwenden eine Reihe von Objekten. Können Sie stattdessen ein zweidimensionales Array verwenden?
http://www.datatables.net/examples/data_sources/js_array.html
Siehe diese jsfiddle: http://jsfiddle.net/QhYse/
Ich habe ein Array wie dieses verwendet und es hat gut funktioniert:
Bearbeiten, um ein Array von Objekten einzuschließen
Es gibt eine mögliche Lösung für diese Frage: jQuery DataTables wird mit Objekten gerendert
Diese jsfiddle http://jsfiddle.net/j2C7j/ verwendet ein Array von Objekten. Um den Fehler nicht zu bekommen, musste ich ihn mit 3 leeren Werten auffüllen - weniger als optimal, ich weiß. Möglicherweise finden Sie einen besseren Weg mit fnRender. Bitte posten Sie, wenn Sie dies tun.
quelle
Fügen Sie für Null- oder undefinierte Wertefehler einfach diese Zeile zu den Attributen hinzu:
,"columnDefs": [ { "defaultContent": "-", "targets": "_all" } ]
Beispiel:
oTable = $("#bigtable").dataTable({ "columnDefs": [{ "defaultContent": "-", "targets": "_all" }] });
Das Warnfeld wird nicht mehr angezeigt. Leere Werte werden durch die von Ihnen angegebenen Werte ersetzt.
quelle
Das plagte mich über eine Stunde lang.
Wenn Sie die Option dataSrc und die Option column defs verwenden, stellen Sie sicher, dass sie sich an den richtigen Positionen befinden. Ich hatte verschachtelte Spaltendefekte in den Ajax-Einstellungen und verlor viel zu viel Zeit, um das herauszufinden.
Das ist gut:
Das ist nicht gut:
Subtiler Unterschied, aber real genug, um Haarausfall zu verursachen.
quelle
Ich hatte das gleiche Problem. In meinem Fall stellte sich heraus, dass mir das Komma nach der letzten Spalte fehlte. 30 Minuten meines Lebens verschwendet, ich werde nie zurückkommen!
quelle
Stellen Sie sicher, dass die Spaltennamen identisch sind. Sie unterscheiden zwischen Groß- und Kleinschreibung. In meinem Fall habe ich diesen Fehler erhalten, wenn die Spaltennamen meines Modells in Großbuchstaben geschrieben sind und ich alle Kleinbuchstaben in den Daten der Ajax-Anfrage verwendet habe.
Also habe ich gelöst, indem ich die Spaltennamen genauso abgeglichen habe wie die vorhandenen Modellnamen.
DataTable-Bindung
Web-API-Methode:
Mein Modell:-
In meinem Fall fülle ich also Daten mit Spalten (Name, Name, ID). Ich dupliziere den zweiten zu testenden Spaltennamen.
quelle
Von der DataTables-Website:
Weitere Informationen finden Sie in diesem technischen Hinweis auf der DataTables-Website.
quelle
Ich Gesicht dieses Problem , weil ich messed
return keyword
incustom rendering
inColumns section
Das Problem in meinem Code ist, dass ich
messed
dieReturn keyword
in derelse clause
also habe ich es geändert in
quelle
Dies ist ein sehr häufiger Fall in DataTables, wenn das in der DataTable-Konfiguration definierte Anforderungsfeld nicht gefunden werden kann.
Zum Beispiel:
Hier, wenn DataTable die oben genannten Eigenschaften nicht erhält. Es wird diese Warnung generiert:
DataTables-Warnung: Unbekannter Parameter '0' aus der Datenquelle für Zeile '0' angefordert.
Um dies zu überwinden, müssen Sie nur einen Standardwert in "aoColumns" festlegen.
Zum Beispiel:
sDefaultContent unterdrückt die Warnung.
Hinweis: Diese Eigenschaft kann basierend auf der Version der von Ihnen verwendeten dataTables geändert werden.
quelle
In meinem seltsamen Szenario hatte ich eine andere Spalte, die nicht immer einen Wert in der Funktion 'Rendern' zurückgab.
return null
löste mein Problem.quelle
Wenn jemand die neuen DataTables verwendet (was übrigens fantastisch ist) und ein Array von Objekten verwenden möchte, können Sie dies einfach mit der Spaltenoption tun. Unter dem folgenden Link finden Sie ein hervorragendes Beispiel dafür.
DataTables mit Array von Objekten
Ich hatte in den letzten 2 Tagen damit zu kämpfen und das hat es gelöst. Ich wollte aus anderen Codegründen nicht auf mehrdimensionale Arrays umsteigen und suchte nach einer solchen Lösung.
quelle
Wenn Sie verwenden
knockout.bindings.dataTables.js
, können Sie die Datei bearbeiten und diese Zeile ersetzenmit
Das hat mir geholfen und ich hoffe, es wird Ihnen helfen.
quelle