Ich verwende freie jqgrid 4.14. Ich habe ein Problem mit der vertikalen Bildlaufleiste im Baumraster. Ich habe eine Höhe für das Baumraster definiert. Wenn nun die Gitter geladen werden und ich versuche, sie zu erweitern, geschieht dies. Vertikale Bildlaufleiste unter der letzten Spaltenbreite
Aber sobald ich die Größe des Fensters ändere, wird die Scrollbar-Breite nicht aus der letzten Spaltenbreite übernommen, sondern hat sie selbst. Siehe
Also, dachte ich an
beim Start Last vertikale Scrollbalken machen.ui-jqgrid .ui-jqgrid-bdiv { overflow-y: scroll }
aber dann auch ist es Breite von der Säule unter.
Ich lade Gitter mit diesen Einstellungen -
datatype: "jsonstring",
datastr: grid_data,
colNames: scopes.grid_header_column_value[grid_id],
colModel: scopes.gridcolumns[grid_id],
height: height,
viewrecords: is_pager_enable,
multiSort: true,
ignoreCase: true,
grouping: is_group_enable,
headertitles:true,
sortorder: sort_order,
sortable: false,
pager: "#" + pager_id,
treeGrid: true,
treeGridModel: 'adjacency',
treedatatype: "jsonstring",
ExpandColumn: 'name'
Auch ich diese Eigenschaften beantrage -
$("#" + grid_id).closest('.ui-jqgrid-bdiv').width($("#" + grid_id).closest('.ui-jqgrid-bdiv').width() + 1);
$(".ui-jqgrid-sortable").css('white-space', 'normal');
$(".ui-jqgrid-sortable").css('height', 'auto');
$(".ui-jqgrid tr.jqgrow td").css('white-space', 'normal');
$(".ui-jqgrid tr.jqgrow td").css('height', 'auto');
$("div.ui-jqgrid-sdiv").after($("div.ui-jqgrid-bdiv"));
ich auch jqGridAfterLoadComplete Ereignis verwenden, so dass beim Laden auch führt sie die gleiche Operation Was sollte es in der Größenänderung von here
So wie kann die vertikale Bildlaufleiste zwingen, Breite von außerhalb des Rasters zu nehmen.
Update: hinzugefügt Bild nach der Lösung
Hier ist das Bild, das angibt, genau das, was ich will.
Hier ist die Scrollbar nicht erforderlich ist, aber noch ist es als leer initialisiert ohne Spalte unter Breite
Problem beim Ändern der Größe: ich jquery Ereignis verwenden, wenn die Fenstergröße verändert wird, so zu Größe der jqgrid nach dem Bildschirm, aber hier ist das Problem, wenn ich verkleinere das Fenster auf kleinere Bildschirm und erweitern Sie das Baumraster, Bildlaufleiste kommt. Der Code zum Ändern der Größe ist wie das ist -
$(window).bind('resize', function() {
resizeGrid.call($('#' + grid_id));
});
resizeGrid = function() {
var newWidth = $(this).closest(".ui-jqgrid").parent().width();
$(this).jqGrid("setGridWidth", newWidth, true);
};
Like this -
hier die Scrollbar haben besonders viel Platz und es ist außerhalb des gegebenen Raum kommen. Wenn ich nun das Fenster auf die volle Größe skaliere und alle Zeilen zusammenfalte, ist das leere für die Bildlaufleiste vorhanden.
Es sieht wie folgt aus -
Ich habe versucht, Ihre Lösung, aber ich bekomme nicht, was ist das Problem. Bei Baumraster wird die Breite so erhöht, dass das Gitter selbst ausschneidet. Ich poste ein Bild davon in Frage – shv22
@ shv22: Ich verstehe immer noch nicht vollständig, was das aktuelle Problem ist. Wenn Sie den zweiten Weg verwenden (mit der Verwendung von 'normalizeWidth'), sollte die Bildlaufleiste wie auf Ihrem zweiten Bild aussehen (https://i.stack.imgur.com/bVhBH.png). Sie verwenden lokalen Datentyp. Dann wäre es besser, dass Sie die Demo (in JSFiddle) erstellen, die Ihr aktuelles Problem demonstriert. Ich könnte den Code der Demo ändern, damit es funktioniert. – Oleg
@ shv22: Siehe die Demo https://jsfiddle.net/rs8d83w3/ – Oleg