2017-09-27 3 views
0

Ich benutze Datatables und habe bestimmte Zeilen mit jQuery .toggle() versteckt, die im Grunde nur eine "Anzeige: keine" zu dem fraglichen Element hinzugefügt. Ich habe Zeilen ausgeblendet und der vertikale Bildlauf meiner Tabelle berechnet die Länge der Tabelle nicht basierend auf dem, was sichtbar ist und was nicht. Nach dem letzten sichtbaren Element gibt es also einen leeren Bereich, in dem die Zeilen noch gescrollt werden können.Datatables vertikaler Bildlauf mit versteckten Zeilen

Ich bin auf der Suche nach einer Möglichkeit, Tabelle Scroll Höhe basierend auf dem, was sichtbar ist neu berechnen.

Hier ist ein Bild des Problems, ich möchte nicht, dass dieser leere Raum da ist. enter image description here

es so enter image description here

Initialisierungscode aussehen sollte: g_oTable = $('#' + tableName).DataTable({ colReorder: true , rowId: 'alertid' , searchHighlight: true , stateSave: true , stateDuration: -1 , autoWidth: false , order: [ [0, "asc"], [5, "desc"] ] , info: true , scroller: true , scrollX: false , scrollY: ($(window).height() - 215) , scrollCollapse: true , deferRender: false , rowGroup: { enable: false, startRender: function (rows, group) { return '<span class="fa fa-chevron-right" style="margin- left:5px;margin-right:10px;"aria-hidden="true"></span>' + group +' ('+rows.count()+')'; } }

Antwort

0

Ich fand meine eigene Antwort. In meiner Initialisierung verwendete ich Scroller und ich habe keine Dokumentation oder Argumentation für die Inkompatibilität mit meinem Anwendungsfall, aber scroller: false half, dieses Problem für mich zu beheben.

0

Versuchen Sie den Code jedes Mal, rufen Sie an Sichtbarkeit bestimmter Zeilen wechseln.

$.fn.dataTable 
    .tables({ visible: true, api: true }) 
    .scroller.measure(); 
+0

Ich hatte diese Methode vorher nicht gefunden, aber es änderte das Verhalten nicht, als ich es hinzufügte. Ich habe bestätigt, dass der DrawCallback aufgerufen wurde, also hat der Code, den Sie angegeben haben, definitiv ein Redraw aufgerufen, aber das leere Platzproblem – justinlav

+0

@justinlav nicht beachtet, bitte zeigen Sie Ihren DataTables-Initialisierungscode an. Versuchen Sie auch, die Initialisierungsoption ['scrollCollapse: true'] (https://datatables.net/reference/option/scrollCollapse) zu verwenden. –

+0

Ich habe der Frage den Initialisierungscode hinzugefügt. Ich habe den Ajax-Aufruf und einige Click-Handler weggelassen, da das Problem nur auftritt, wenn ich versuche, RowGroups zu reduzieren, nachdem ich Rowgroup beim Klicken auf die Schaltfläche aktiviert habe. Ich verwende derzeit scrollCollapse: true, dieses Verhalten ist sehr seltsam. Soweit ich weiß, sollte Datatables in der Lage sein, den leeren Speicherplatz basierend auf der Sichtbarkeit von Zeilen automatisch zu löschen. – justinlav

Verwandte Themen