Jak dostosować szerokość kolumny jqgrid PO załadowaniu danych?
Moim ostatecznym celem jest posiadanie jqgrid do automatycznego ustawiania szerokości kolumny zgodnie z zawartością danych. Jako część ścieżki, którą należy tam przejść, muszę być w stanie ustawić szerokość kolumny PO załadowaniu danych, kiedy to poznam maksymalną szerokość każdej kolumny. Ale skoro znam maksymalną szerokość kolumny, jak mogę ustawić szerokość każdej kolumny w zdarzeniu „loadComplete” i odświeżyć siatkę o nową szerokość każdej kolumny? Większość słupków, które znalazłem w sieci, dotyczy całkowitej szerokości siatki. Chcę ustawić szerokość każdej kolumny i automatycznie wyświetlić poziomy pasek przewijania, jeśli całkowita szerokość jest zbyt długa.
Aktualizacja: Po obejrzeniu niesamowitego demo Olega, zakodowałem to w samym dqGrid (4.5.4). Oto co zrobiłem:
Znajdź funkcję
addJSONData = function(data,t, rcnt, more, adjust) {
następnie znajdź w tej funkcji
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;
}
}
Następnie tuż przed końcem} tej funkcji dodaj następujące
// my addition: invoke the resizing logic
for (j = 0; j < rowReader.length; j++) {
ts.grid.resizing = { idx: j };
ts.grid.dragEnd();
}
Następnie siatka dostosuje szerokość każdej kolumny zgodnie z zawartością. Jedną z rzeczy, na które wciąż potrzebuję pomocy, jest precyzyjne obliczanie nowej szerokości. Moje aktualne obliczenia na stałe
var newWidth = v.length * 6;
oczywiście nie jest zbyt skalowalny.