ユーザーメニューから表示および非表示にしたい多数の列を持つテーブルを作成しています。
kendoui サイトの素敵な例はこちら
私の問題は、表示/非表示メニューがすべての列で同じであることですが、個々の列の列メニューの奥深くに埋め込まれています。
ユーザーが複雑なドロップダウンをクリックする必要がないように、そのメニューを 1 か所だけ、おそらくテーブル ツールバーまたはフッターに表示したいと考えています。
ユーザーメニューから表示および非表示にしたい多数の列を持つテーブルを作成しています。
kendoui サイトの素敵な例はこちら
私の問題は、表示/非表示メニューがすべての列で同じであることですが、個々の列の列メニューの奥深くに埋め込まれています。
ユーザーが複雑なドロップダウンをクリックする必要がないように、そのメニューを 1 か所だけ、おそらくテーブル ツールバーまたはフッターに表示したいと考えています。
これは少しトリッキーになり、プログラミングが必要になります。
ソリューションは以下に基づいています。
テンプレート定義
<!-- language: lang-html -->
<script type="text/kendoui" id="template">
<div>
<label for='field-#= item.field #'>
#= item.title ? item.title : item.field #
<input type='checkbox' id='field-#= item.field #' checked onclick='hideColumn("#=idx#")'>
</label>
</div>
</script>
ここで、グリッド定義で、ツールバーが関数を実行した結果であることを定義します。
<!-- language: lang-json -->
toolbar : toolbarGenerator,
そしてtootbarGeneration
次のとおりです。
function toolbarGenerator() {
var template = kendo.template($("#template").html());
var toolbar = "";
var grid = $("#grid").data("kendoGrid");
$.each(grid.columns, function (idx, item) {
toolbar += template({ idx : idx, item : item });
});
return toolbar;
}
これは、ツールバーを生成するためのテンプレートを適用するすべての列を反復処理します。
チェックボックスの変更のイベント ハンドラーは次のとおりです。
function hideColumn(col) {
var grid = $("#grid").data("kendoGrid");
if (grid.columns[col].hidden) {
grid.showColumn(+col);
} else {
grid.hideColumn(+col);
}
}
そしてJSFiddleはこちらhttp://jsfiddle.net/OnaBai/GerEN/1/