Gibt es eine Möglichkeit, die Größe eines jqGrid zu ändern, wenn die Größe des Browserfensters geändert wird? Ich habe die hier beschriebene Methode ausprobiert , aber diese Technik funktioniert in IE7 nicht.
81
Ich verwende dies seit einiger Zeit ohne Beschwerden in der Produktion (möglicherweise sind einige Anpassungen erforderlich, um auf Ihrer Website richtig auszusehen. Zum Beispiel das Abziehen der Breite einer Seitenleiste usw.)
$(window).bind('resize', function() {
$("#jqgrid").setGridWidth($(window).width());
}).trigger('resize');
Als Nachfolge:
Der vorherige Code in diesem Beitrag wurde schließlich aufgegeben, weil er unzuverlässig war. Ich verwende jetzt die folgende API-Funktion, um die Größe des Rasters zu ändern, wie in der jqGrid-Dokumentation empfohlen:
Um die eigentliche Größenänderung durchzuführen, ist eine Funktion, die die folgende Logik implementiert, an das Größenänderungsereignis des Fensters gebunden:
Berechnen Sie die Breite des Rasters mithilfe der clientWidth des übergeordneten Elements und (falls nicht verfügbar) des OffsetWidth-Attributs.
Führen Sie eine Überprüfung der Integrität durch, um sicherzustellen, dass sich die Breite um mehr als x Pixel geändert hat (um einige anwendungsspezifische Probleme zu umgehen).
Verwenden Sie abschließend setGridWidth (), um die Breite des Rasters zu ändern
Hier ist ein Beispielcode für die Größenänderung:
Und Beispiel Markup:
quelle
Automatische Größenänderung:
Für jQgrid 3.5+
Für jQgrid 3.4.x:
quelle
$(this).setGridWidth(gridParentWidth, true);
Das scheint gut für mich zu funktionieren
quelle
Ich verwende 960.gs für das Layout, daher lautet meine Lösung wie folgt:
// Andere unten definierte Gitter ...
quelle
Wenn du:
shrinkToFit: false
(mittlere Spalten mit fester Breite)autowidth: true
Sie können Raster mit flüssiger Breite mit folgenden Stilen erstellen:
Hier ist eine Demo
quelle
Wenn Sie sich den Code unter Ihrem Link ausleihen, können Sie Folgendes ausprobieren:
Auf diese Weise binden Sie direkt an das window.onresize-Ereignis, das tatsächlich so aussieht, wie Sie es von Ihrer Frage erwarten.
Wenn Ihr Raster auf 100% Breite eingestellt ist, sollte es sich automatisch erweitern, wenn sich sein Container erweitert, es sei denn, das verwendete Plugin weist einige Komplikationen auf, die ich nicht kenne.
quelle
Die Hauptantwort funktionierte für mich, machte die App jedoch im IE extrem unempfindlich, sodass ich wie vorgeschlagen einen Timer verwendete. Code sieht
$(#contentColumn)
ungefähr so aus ( ist das Div, in dem sich das JQGrid befindet):quelle
Hallo Stack-Überlauf-Enthusiasten. Ich habe die meisten Antworten genossen und sogar ein paar Stimmen hochgestimmt, aber keiner von ihnen hat aus irgendeinem seltsamen Grund für mich im IE 8 funktioniert ... Ich bin jedoch auf diese Links gestoßen ... Dieser Typ hat eine Bibliothek geschrieben, die zu sein scheint Arbeit. Nehmen Sie es in Ihre Projekte auf, und fügen Sie den Namen Ihrer Tabelle und das div hinzu.
http://stevenharman.net/blog/archive/2009/08/21/creating-a-fluid-jquery-jqgrid.aspx
http://code.google.com/p/codeincubator/source/browse/#svn%2FSamples%2Fsteveharman%2FjQuery%2Fjquery.jqgrid.fluid%253Fstate%253Dclosed
quelle
hat perfekt für mich funktioniert. von hier gelernt .
quelle
autowidth
funktioniert einwandfrei, wenn das Raster zum ersten Mal geladen wird, ändert jedoch nicht die Größe des Rasters, wenn die Größe des Browsers geändert wird. Wie sind Sie mit diesem Problem umgegangen oder ist das für Sie keine Voraussetzung?Das funktioniert..
quelle
quelle