私の場合は、約20のプロパティを持つ検索ウィンドウで、ユーザーは検索条件を指定できます。各プロパティには、小道具が検索結果に含まれるかどうかを切り替える対応するチェックボックスがあります。検索結果は剣道グリッドに表示されます。
問題を説明する必要がある簡略化されたコード(kendo ui complete ver。2012.2.710):
<input type="checkbox" onclick="fnShowHide(1);" name="showSearchColumn" id="checkShowField1" />
<div id="example" class="k-content">
<div id="kendoGridTest"></div>
</div>
<script>
function fnShowHide( iCol )
{
$('#kendoGridTest').data("kendoGrid").options.columns[iCol].hidden = false;
$('#kendoGridTest').data("kendoGrid").refresh();
}
</script>
MVC3コントローラーメソッドは、検索からJsonResultタイプのデータを返します(jsonResultSearchResult
以下のように指定)。
$('#kendoGridTest').kendoGrid({
dataSource: jsonResultSearchResult,
schema: {
model: {
fields: {
FirstName: { type: "string" },
LastName: { type: "string" },
Address: { type: "string" }
}
}
},
sortable: true,
resizable: true,
columns: [{
field: "FirstName",
width: 90,
title: "First name"
},
{
field: "LastName",
width: 120,
hidden: true,
title: "Last name"
},
{
field: "Address",
width: 140,
title: "Adr"
}
]
});
検索を実行した後、グリッドは適切なデータで埋められ、LastName
実際に非表示になります。しかし、ユーザーがコントロールをチェックした場合、checkShowField1
3つの列すべてが表示された状態でグリッドを更新したいと思います。そうではありません。fnShowHide()
仕事をしません。
VSでデバッグしているときに、QuickWatchウィンドウで任意の種類のColumnsコレクションを探していたことを認める必要があります。のコレクションにfnShowHide
は、グリッドが初期化されたときの正しいデータが含まれており、.hidden
プロパティを操作できますが、グリッドに列が表示されません。
colsの動的な非表示/表示がサポートされているかどうかはまだ少し混乱していますが、Telerikの従業員からのこの受け入れられた回答は有望に見えました。