8

MVC.NET で KENDO UI グリッドを使用しています。

グリッドは、列ごとに列フィルターを表示するように構成されています。

ただし、一部の列はフィルター処理できないため、フィルターを非表示にしたいと考えています。

これを C# 側から構成する方法はありますか? (CSS や JS は使用していません)。

4

5 に答える 5

16

コードには、おそらく次のようなものがあります。

<asp:Content ContentPlaceHolderID="MainContent" runat="server">
<%: Html.Kendo().Grid(Model)
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.ProductID).Groupable(false);
        columns.Bound(p => p.ProductName);
        columns.Bound(p => p.UnitPrice);
        columns.Bound(p => p.UnitsInStock);
    })
    .Groupable()
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("Products_Read", "Grid"))
    )
%>
</asp:Content>

ProductID列をフィルタリングできないようにしたい場合は、次のように言う必要があります。

<asp:Content ContentPlaceHolderID="MainContent" runat="server">
<%: Html.Kendo().Grid(Model)
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.ProductID).Groupable(false).Filterable(false);
        columns.Bound(p => p.ProductName);
        columns.Bound(p => p.UnitPrice);
        columns.Bound(p => p.UnitsInStock);
    })
    .Groupable()
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("Products_Read", "Grid"))
    )
%>
</asp:Content>
于 2013-01-08T22:13:38.310 に答える
3

列を設定していない場合は、データバインド イベントなどでグリッドが初期化された後にフィルター ボタンを非表示にすることができます。特定のフィールドのフィルター ボタンを非表示にする 1 つの方法を次に示します。

$("#MyGrid").find(".k-header[data-field='Pct_positive']").find(".k-grid-filter").css("visibility","hidden");

それらをすべて隠すには...

$("#MyGrid").find(".k-header").find(".k-grid-filter").css("visibility","hidden");
于 2013-01-25T18:14:03.847 に答える
1

私の知る限り、columns.filterableデフォルトで「true」に設定されているため、フィルタリングしたくない列の構成プロパティを「false」に設定できる必要があります(ドキュメント:columns.filterableを参照)

C# 側からこれを実行できるかどうかは、コードで Kendo Grid がどのように初期化されているかによって異なります。

于 2013-01-08T20:25:20.213 に答える
0

質問では言及しませんでしたが、グリッドの AutoGenerate() 機能を使用していたため、Filterable設定に簡単にアクセスできません。

その場合の 1 つの回避策は次のとおりです。

var gb = Html.Kendo().Grid(data).Name("test");
gb.Columns(columns => { columns.AutoGenerate(true); });

// !!! Hide filter for first column in grid.
gb.Columns( (columns) => { (columns.Container.Columns[0] as IGridBoundColumn).Filterable=false;  });

gb.Filterable(filtering => filtering.Enabled(true));

gb.DataSource(ds => ds
                .Ajax()
                .ServerOperation(true)
                .Model(model => model.Id("A"))
                );
gb.Render();
于 2013-01-09T02:16:45.303 に答える