Mein ultimatives Ziel ist es, dass jqgrid die Spaltenbreite automatisch entsprechend dem Dateninhalt einstellt. Als Teil des Weges dorthin muss ich die Spaltenbreite einstellen können, NACHDEM die Daten geladen sind, zu welcher Zeit ich die maximale Breite jeder Spalte kennen würde. Aber sobald ich die maximale Breite einer Spalte weiß, wie kann ich die Breite jeder Spalte im "loadComplete" -Ereignis einstellen und das Gitter mit der neuen Breite jeder Spalte aktualisieren lassen? Die meisten Posts, die ich im Internet gefunden habe, beziehen sich auf die Gesamtbreite des Rasters. Ich möchte die Breite jeder einzelnen Spalte festlegen und die horizontale Bildlaufleiste wird automatisch angezeigt, wenn die Gesamtbreite zu lang ist.Wie wird die Spaltenbreite von jqgrid NACH dem Laden der Daten angepasst?
Update: Nachdem ich Olegs geniales Demo gesehen habe, habe ich das im dqGrid (4.5.4) selbst programmiert. Hier ist, was ich getan habe:
Suchen Sie die Funktion
addJSONData = function(data,t, rcnt, more, adjust) {
dann innerhalb dieser Funktion
for (j=0;j<rowReader.length;j++) {
v = $.jgrid.getAccessor(cur,rowReader[j]);
rd[ts.p.colModel[j+gi+si+ni].name] = v;
rowData.push(addCell(idr, v, j + gi + si + ni, i + rcnt, cur, rd));
// my addtion: stores the largest header size
var newWidth = v.length * 6;
if (ts.grid.headers[j].width < newWidth) {
ts.grid.headers[j].width = newWidth;
}
}
dann kurz vor dem Ende lokalisieren} dieser Funktion, fügen Sie folgendes
// my addition: invoke the resizing logic
for (j = 0; j < rowReader.length; j++) {
ts.grid.resizing = { idx: j };
ts.grid.dragEnd();
}
Danach passt das Raster die Breite jeder Spalte an den Inhalt an. Eine Sache, auf die ich noch Hilfe brauche, ist, wie man die neue Breite richtig berechnen kann. Meine aktuelle fest codierte Berechnung
var newWidth = v.length * 6;
ist offensichtlich nicht sehr skalierbar.
Es wäre gut, wenn Sie auf Ihre Fragen antworten (http://meta.stackexchange.com/a/5235/147495). – Oleg