ここでは、データに基づいてグリッド セルの幅を設定する方法を説明します。これはdatagrid
obj 用ですが、おそらく obj 用にいくつかの調整を行う必要がありますdgrid
。
いくつかの手順があります:
1) <div>
HTML 呼び出しでタグを作成します。test
<div id="test"></div>
2) グリッド内の各列のデータをループし、次のような JavaScript を使用してその列のデータの最大幅をキャプチャします。
var fnt_sz = '9pt';
var tst_item = window.document.getElementById("test");
tst_item.style.fontSize = fnt_sz;
var widthPX = 45; //default px width
for (var i = 0; i < columns.length; i++) {
tst_item.innerHTML = columns[i]; //columns array represents data that will display for the column
widthPX = (tst_item.clientWidth + 1); //Give width in PX of the data pad it a bit as needed
}
ここでの重要な項目には、適切なフォント サイズ (fnt_sz) の設定、すべての列データをループして列の最大幅 (PX) を見つけることが含まれます。列の最大値を使用して、データグリッドのオブジェクトwidthPX
の列幅を設定します。layout
3) データグリッドのレイアウト JSON データを作成するときは、各列の幅を設定します (列の最大データ幅PX)。何かのようなもの:
var build_layout = " var layout = [[{'name': 'ID', 'field': 'id', 'width': '17px'},";
for (var i = 0; i < cols.length; i++) {
build_layout += "\n{'name': '" + cols[i] + "', 'field': 'col" + (i+1) + "', 'width': '" + widths[i] + "px'},";
}
build_layout += "]];";
eval(build_layout);
/*create a new grid*/
var grid = new DataGrid({
id: 'grid',
store: store,
structure: layout, //Use layout JSON data which has width: xxpx; set for each column
rowSelector: '20px',
style: 'font-size:9pt',
rowsPerPage: 1000,
columnReordering: true,
autoWidth: true,
autoHeight: autoH});
グリッドが表示されると、どのブラウザでも適切に表示され、列幅の PX 値がその列の最大データ項目よりも大きいため、すべてのデータが表示されるはずです。各列の最大 px 値を簡単に追加できるはずです。物事は幅で手に負えません。
これは $ss では少し面倒で、dojo datagrid オブジェクトのプロパティである必要がありますが......
これらの手順を実行して最終的に得られるものは次のとおりです。
