Immer wenn ich <td colspan="x"></td>
verwende, erhalte ich folgende Fehlermeldung:
Nicht erfasster TypeError: Die Eigenschaft '_DT_CellIndex' von undefined (…) kann nicht festgelegt werden.
$("table").DataTable({});
<link href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.12/css/jquery.dataTables.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.12/js/jquery.dataTables.min.js"></script>
<table style="width:50%;">
<thead>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>1</td>
<td colspan="2">3 4</td>
<td colspan="3">4 5 6</td>
</tr>
</tbody>
</table>
Ohne DataTables.js funktioniert es ordnungsgemäß, aber wenn wir diese Struktur mit datatable.js verwenden, funktioniert es nicht. Wir brauchen über Tabellenstruktur. Hat jemand eine Idee, wie wir diese Tabellenstruktur datatable.js verwenden können?
Sie können die mangelnde Colspan-Unterstützung umgehen, indem Sie für jede Zelle, die entfernt wird, eine "unsichtbare" Zelle hinzufügen:
<tr>
<td colspan="3">Wide column</td>
<td style="display: none;"></td>
<td style="display: none;"></td>
</tr>
<tr>
<td>Normal column</td>
<td>Normal column</td>
<td>Normal column</td>
</tr>
DataTables beschwert sich nicht, die Tabelle stellt normal dar und das Sortieren funktioniert (unsichtbare Spalten sortieren als leere Zeichenfolge).
Ich habe das nicht mit Rowspan versucht.
Momentan unterstützen Datenbänke keine Zeilen- oder Spaltenbereiche für den Tabellenkörper.
Die mögliche Lösung sollte jedoch sein
Beispiel für ausgeblendete Zeilen in DataTables
Hoffe, es funktioniert.
Die ausgezeichnete Lösung von Dirk Bergstrom funktioniert nur mit HTML-Daten.
Es ist auch möglich, dieselbe Idee mit Daten aus Ajax-Quellen zu verwenden.
Sie müssen die Option createdRow verwenden, um die erforderlichen Zellen zu ändern, wenn das Element TR
im Tabellenkörper erstellt wird.
Zum Beispiel:
var table = $('#example').DataTable({
ajax: 'https://api.myjson.com/bins/qgcu',
createdRow: function(row, data, dataIndex){
// If name is "Ashton Cox"
if(data[0] === 'Ashton Cox'){
// Add COLSPAN attribute
$('td:eq(1)', row).attr('colspan', 3);
// Hide required number of columns
// next to the cell with COLSPAN attribute
$('td:eq(2)', row).css('display', 'none');
$('td:eq(3)', row).css('display', 'none');
// Update cell data
this.api().cell($('td:eq(1)', row)).data('N/A');
}
}
});
Siehe dieses Beispiel für Code und Demonstration.
Weitere Informationen finden Sie in jQuery DataTables: COLSPAN im Tabellenkörper TBODY - Ajax data .
Es ist möglich, das ROWSPAN
-Attribut mit dem RowsGroup -Plug-In zu emulieren.
Um das Plugin verwenden zu können, müssen Sie die JavaScript-Datei dataTables.rowsGroup.js
einschließen und die Option rowsGroup
verwenden, um Indizes der Spalten anzugeben, auf die die Gruppierung angewendet werden soll.
var table = $('#example').DataTable({
'rowsGroup': [2]
});
Siehe dieses Beispiel für Code und Demonstration.
Weitere Informationen finden Sie in jQuery DataTables: ROWSPAN im TBODY -Text des Artikels.
Es ist möglich, Zellen sowohl vertikal als auch horizontal gleichzeitig zu gruppieren, wenn Sie beide oben beschriebenen Problemumgehungen kombinieren.
Siehe dieses Beispiel für Code und Demonstration.
Weitere Informationen finden Sie in jQuery DataTables: COLSPAN im Tabellenkörper TBODY - COLSPAN und ROWSPAN .
Ich weiß nicht, an welchem Punkt, aber ich glaube, der FnFakeRowspan unterstützt die aktuelle DataTable-Version nicht.
Für eine Alternative checkout RowsGroup plugin.
Fand es ziemlich einfach zu implementieren und funktioniert gut. Die Suche funktioniert perfekt, die Bestellung nicht.
Überprüfen Sie hier für eine Implementierung.
Wenn Sie scrollX
verwenden
<thead>
<tr>
<th style="width: 20px;"></th>
<th>column H</td>
<th>column H</td>
</tr>
</thead>
<tbody>
<tr>
<td colspan="3">Wide column</td>
<td style="display: none;"></td>
<td style="display: none;"></td>
</tr>
<tr>
<td>123</td>
<td>Normal column</td>
<td>Normal column</td>
</tr>
</tbody>
Geänderte Antwort von #Dirk_Bergstrom
Da datatables Colspan nicht unterstützt, benutze ich normalerweise ungeordnete Listen (ul) mit Listenstil: none;
Siehe unten.
Verweisen Sie auch hier auf das Plugin.
Hoffe, das wird dir helfen