Ich kann folgenden Datatables-Fehler nicht beheben:
SCRIPT5007: Die Eigenschaft '_DT_CellIndex' für undefined oder .__ kann nicht festgelegt werden. Nullreferenz
Ich habe versucht, im ganzen Internet nachzuschauen und habe das als beste Lösung gefunden. Ich kann dieses Problem aber immer noch nicht lösen. Fehlt mir hier etwas? Ich bin ein Neuling in JavaScript.
Grundsätzlich wurde dieses Problem aufgrund der fehlenden Übereinstimmungszählung von th bis td angezeigt. Achten Sie auf die Anzahl der Übereinstimmungen mit td. hoffe das wird dir helfen.
Wir hatten den gleichen Fehler, was für uns behoben wurde, ist das Ändern des (Ziels) in der datierbaren Initialisierung basierend auf der Anzahl der Spalten, die bei 0 beginnen
In unserer Tabelle hatten wir 4 Spalten, also taget: [3]
$.extend($.fn.dataTable.defaults,{
columnDefs: [{
targets: [3]
}]
});
fand diese Antwort hier: datatable Foren
Ein einfacher Fehler, der Tabellenkopf hatte eine Spalte mit dem Titel "no ", Aber die Spalte war in der Tabelle selbst nicht vorhanden. Ich konnte nicht Fehlen.
hat es funktioniert?
Ich habe es repariert. Es war js part vs html .
Problem trat auf, als ich die HTML-Spalte löschte und vergaß, eine js-Spalte zu löschen, die so aussah.
{"name": "Product", "orderable": true, "searchable": true},
Nachdem ich die zusätzliche Spalte in js gelöscht hatte, funktionierte alles.
Wenn Sie die Zeile mit der Meldung "No record found" (Kein Datensatz gefunden) wie im folgenden Code anzeigen möchten
@if(Model.Count==0)
{
<tr>
<td colspan="3">
No record found.
</td>
</tr>
}
dann entfernen Sie einfach diese Bedingung, da datatable selbst die Meldung "Keine Daten in der Tabelle verfügbar" anfügt. In meinem Fall wird der Fehler behoben
So beheben Sie den Fehler:
Die Eigenschaft '_DT_CellIndex' kann nicht definiert werden
Zuerst sage ich Ihnen, dass $("id_tu_tabla").Datatable()
eine minimale Anzahl von Spalten hat, es sind 6. Aber wenn Sie weniger als das haben, haben Sie es wie in diesem Code angegeben:
$('#table').DataTable({ columnDefs: [ { goals: [4] }] }); }
Es sieht so aus, als hätten viele Menschen den Fehler wegen der Nichtübereinstimmung von Th und Td bekommen. Für mich kam der Fehler mit einem scheinbar logischen Fehler. Schauen Sie sich den Code unten an.
Anmerkung: Hier habe ich mit Datentabellen in Angular 7 experimentiert, Dinge wie * ngFor, ng-container, * ngIf verbessert, aber egal, schauen Sie sich das an Code-Strukturunterschied (tr
mit ng-container
getauscht).
Tabellenkopf:
<thead>
<tr>
<th>Name</th>
<th>Surname</th>
<th>Email</th>
<th>Organisation</th>
</tr>
</thead>
Dies erzeugt den Fehler:
<tr *ngFor="let user of users; let index = index">
<ng-container *ngIf="showInactiveUsers">
<td>{{user?.firstName}}</td>
<td>{{user?.lastName}}</td>
<td>{{user?.email}}</td>
<td>{{user?.attributes?.organisation}}</td>
</ng-container>
<ng-container *ngIf="!showInactiveUsers && user?.enabled">
<td>{{user?.firstName}}</td>
<td>{{user?.lastName}}</td>
<td>{{user?.email}}</td>
<td>{{user?.attributes?.organisation}}</td>
</ng-container>
</tr>
Das Umstellen des Codes wie folgt behebt den Fehler:
<ng-container *ngFor="let user of users; let index = index">
<tr *ngIf="showInactiveUsers">
<td>{{user?.firstName}}</td>
<td>{{user?.lastName}}</td>
<td>{{user?.email}}</td>
<td>{{user?.attributes?.organisation}}</td>
</tr>
<tr *ngIf="!showInactiveUsers && user?.enabled">
<td>{{user?.firstName}}</td>
<td>{{user?.lastName}}</td>
<td>{{user?.email}}</td>
<td>{{user?.attributes?.organisation}}</td>
<td *ngIf="user?.enabled">
</tr>
</ng-container>
Ich hatte ein ähnliches Problem und es wurde behoben, indem das '$' Zeichen, das sich unter dem Spaltennamen befand, entfernt wurde. Hoffe das hilft.
Überprüfen Sie die Anzahl Ihrer Tabellenspalten und dtColumnDefs. Wenn Sie 6 Spalten haben, wird unten Ihre Konfiguration für dtColumnDefs angegeben.
self.dtColumnDefs = [
DTColumnDefBuilder.newColumnDef(0),
DTColumnDefBuilder.newColumnDef(1),
DTColumnDefBuilder.newColumnDef(2),
DTColumnDefBuilder.newColumnDef(3),
DTColumnDefBuilder.newColumnDef(4),
DTColumnDefBuilder.newColumnDef(5)
];