2009-10-15 21 views
7

Meine Anwendung verfügt über mehrere jqGrids, die möglicherweise genug Zeilen enthalten, um eine vertikale Bildlaufleiste zu erfordern. Nach der Erstellung können diese Zeilen jedoch dynamisch zu den Rastern hinzugefügt werden, sodass ein Raster eventuell eine Bildlaufleiste erfordert.jqGrid - Gibt es eine Möglichkeit, immer eine vertikale Bildlaufleiste anzuzeigen?

Das Problem besteht darin, dass wenn das Raster nicht genügend Zeilen für eine Bildlaufleiste erfordert, auf der rechten Seite des Rasters ein leerer Bereich ist. Ich möchte das irgendwie beheben - entweder immer die vertikale Bildlaufleiste anzeigen oder sie bei Bedarf dynamisch hinzufügen.

ich folgende CSS versucht, das Hinzufügen zu dem .ui-jqGrid-BDIV div des Grids:

overflow-y: scroll; 

die folgenden jQuery verwenden (der Code ist hässlich, ich weiß):

$("#mygrid").closest(".ui-jqgrid-bdiv").attr("style", 
$("#mygrid").closest(".ui-jqgrid-bdiv").attr("style") + " overflow-y: scroll; "); 

Diese funktioniert gut in Firefox und Chrome, aber im IE zeigt das Gitter niemals die Bildlaufleiste an (egal wie viele Zeilen ich hinzufüge, sie werden am unteren Rand des Rasters hinzugefügt und eine vertikale Bildlaufleiste erscheint nie).

Jede Hilfe wird geschätzt!

Antwort

14

overflow-y ist CSS3, und es ist noch nicht vollständig von IE unterstützt (seufz ...)

Also, ich denke, die nur 2 CSS Dinge, die Sie dies tun können, ohne andere Markup beteiligt sind, verwenden entweder overflow: auto (wodurch der Browser entscheiden kann) oder overflow: scroll, wodurch sowohl die vertikalen als auch die horizontalen Bildlaufleisten erzwungen werden.

Eine Problemumgehung könnte sein, das gesamte Raster in ein größeres div mit einer minimalen Höhe zu hüllen, also legen Sie das gleich dem Browserfenster + 1px fest. Auf diese Weise erzwingen Sie eine vertikale Bildlaufleiste.

In allen Browsern kann es schwierig sein, eine Mindesthöhe einzustellen, aber in den meisten davon funktioniert das sehr gut.

.the-wrapper{ 
    height: auto !important; /* for real browsers*/ 
    height: 601px;   /* IE6 will use this a min-height. Use any height you need - you can even set this using JavaScript depending on the browser window height */ 
    min-height: 601px;  /* for real browsers - same value as height */ 
} 

Natürlich wird dies etwas Platz unter den Gittern hinzuzufügen. Willkommen an Bord!

+0

Dies ist genau das, was ich empfehlen würde. Ich würde +1 geben, wenn ich noch Stimmen hätte. –

+1

Hi Bob, danke trotzdem :) Aber ich hätte nichts dagegen, wenn du morgen zurück kommst: P – Seb

1

Haben Sie die Eigenschaft height auf dem Raster festgelegt? Wenn keine Höhe eingestellt ist, kann der IE mit Bildlaufleisten mürrisch werden.

+0

Danke, aber ich kann immer noch nicht die Bildlaufleiste auf IE arbeiten ... –

1

Es gibt eine scrollOffset Option für das jqGrid.

Setzen Sie es auf Null und der leere Raum verschwindet.

+0

Richtig, das Problem ist, dass die Bildlaufleiste notwendig ist, wenn es mehr Zeilen als angezeigt werden kann - aber das Raster kann das erst wissen nachdem die Daten abgerufen wurden. Aber sobald das Gitter konstruiert ist, kann die 'scrollOffset' Option nicht geändert werden, entsprechend: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options –

+0

Dies funktioniert nicht mehr. Nicht ablehnen, nur teilen. – catbadger

Verwandte Themen