5

私の場合は、約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実際に非表示になります。しかし、ユーザーがコントロールをチェックした場合、checkShowField13つの列すべてが表示された状態でグリッドを更新したいと思います。そうではありません。fnShowHide()仕事をしません。

VSでデバッグしているときに、QuickWatchウィンドウで任意の種類のColumnsコレクションを探していたことを認める必要があります。のコレクションにfnShowHideは、グリッドが初期化されたときの正しいデータが含まれており、.hiddenプロパティを操作できますが、グリッドに列が表示されません。

colsの動的な非表示/表示がサポートされているかどうかはまだ少し混乱していますが、Telerikの従業員からのこの受け入れられた回答は有望に見えました。

4

1 に答える 1

17

JavaScriptを使用してクライアント側の列を非表示にするには、hideColumn()を使用し、それを表示するには、showColumn()を使用する必要があります。どちらのメソッドにもいくつかのオーバーロードがあります。列のインデックスを渡すか、列がバインドされているフィールドの名前を渡します。例えば:

var grid = $('#GridID').data('kendoGrid');
grid.hideColumn(2);
//or show it
grid.showColumn("OrderDate") // lets say thats the field name of the same column

リンクした投稿は、MVCラッパーで列を非表示/表示する方法を示していますが、これは少し異なります。

于 2012-08-30T19:56:41.870 に答える