私の究極の目標は、jqgridにデータの内容に応じて列の幅を自動設定することです。そこに行く道の一環として、データがロードされた後で列幅を設定できるようにする必要があります。これは各列の最大幅を知る時間です。しかし、一度、列の最大幅を知ったら、 "loadComplete"イベントで各列の幅を設定し、グリッドを各列の新しい幅でリフレッシュさせるにはどうすればよいですか?ネット上で見つかったほとんどの投稿は、グリッドの全体的な幅に関するものです。私が欲しいのは、各列の幅を設定し、幅が長すぎると自動的に水平スクロールバーを表示させることです。データがロードされた後にjqgridの列幅を調整する方法は?
アップデート:Olegの素晴らしいデモを見て、私はdqGrid(4.5.4)自体でこれをコーディングしました。ここに私がやったことだ:
は、
addJSONData = function(data,t, rcnt, more, adjust) {
は、右この関数の最後}前
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;
}
}
次に、この関数内で見つける機能を見つけて追加し、次の
// my addition: invoke the resizing logic
for (j = 0; j < rowReader.length; j++) {
ts.grid.resizing = { idx: j };
ts.grid.dragEnd();
}
その後、グリッドは内容に応じて各列の幅を調整します。私がまだ助けが必要なことの1つは、新しい幅を貴重に計算する方法です。私の現在のハードコード化された計算
VAR newWidth = v.length * 6。
は明らかにあまりスケーラビリティがありません。あなたの質問に
あなたの質問では、[受け入れる](http://meta.stackexchange.com/a/5235/147495)回答が始まるとよいでしょう。 – Oleg