剣道UIグリッドの列幅をプログラムで設定したいのですが。私は次のコードを使用しています:
function setColumnWidths(grid, options) {
for (var i = 0; i < options.columns.length; i++) {
grid.columns[i].width = options.columns[i].width;
}
}
ステートメントの実行後にchrome)でデバッグすると、grid.columns [i] .widthが新しい値に適切に設定されているように見えますが、GUIで何も変更されず、列幅は同じままです。何が足りないのですか?
これで終わりました。 Dionのソリューションは、colgroupsの使用についての最初のアイデアを与えてくれましたが、そのソリューションは、different colgroupsにある列がロックされていないことに限定されています。
また、注意:grid.setOptionsの制限により、添付されたイベントとヘッダーが台無しになるため、使用したくありません(ASP MVCヘルパーを使用してグリッドをレンダリングする場合)
function setColumnWidths(grid, options) {
var lockedCount = 0;
for (var i = 0; i < options.columns.length; i++) {
if (options.columns[i].hasOwnProperty('locked')) {
if (options.columns[i].locked) {
lockedCount++;
}
}
}
for (var i = 0; i < options.columns.length; i++) {
var width = options.columns[i].width;
grid.columns[i].width = width;
if (options.columns[i].hasOwnProperty('locked') && options.columns[i].locked) {
$("#grid .k-grid-header-locked").find("colgroup col").eq(i).width(width);
$("#grid .k-grid-content-locked").find("colgroup col").eq(i).width(width);
} else {
$("#grid .k-grid-header-wrap").find("colgroup col").eq(i-lockedCount).width(width);
$("#grid .k-grid-content").find("colgroup col").eq(i - lockedCount).width(width);
}
}
// Hack to refresh grid visual state
grid.reorderColumn(1, grid.columns[0]);
grid.reorderColumn(1, grid.columns[0]);
}
グリッドの定義ではなく、要素を介してグリッドの幅を変更する必要があります。剣道グリッドにはヘッダーとコンテンツが含まれているため、2つの要素を変更する必要があります。
代わりにこのコードを使用してください
$("#grid-id .k-grid-header-wrap").find("colgroup col").eq(xx).width(yy);
$("#grid-id .k-grid-content").find("colgroup col").eq(xx).width(yy);