2013-01-08 9 views
5

MVC.NETでKENDO UIグリッドを使用しています。MVCのKENDOUIグリッド:いくつかの列でフィルタを非表示にする方法はありますか?

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

私の列の中にはフィルタリングができないものがありますので、フィルタを非表示にしたいと考えています。

これをC#側から設定する方法はありますか? (CSSまたはJSを使用しない)。

答えて

14

、あなたはおそらくのようなものがあります:あなたはProductID列が濾過可能でない場合

<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> 

を、あなたが言う必要があります。

<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> 
1

私が知る限り、フィルタリングしたくない列に対しては、columns.filterable構成プロパティを 'false'に設定する必要があります。デフォルトは 'true'です(ドキュメント:columns.filterable

これをC#側から行うことができるかどうかは、剣道グリッドがコード内でどのように初期化されているかによって異なります。あなたのコードで

+0

私はcolumns.filterableは、すべての列に適用されると思います。私が見つけることができる個々の列を設定する方法はありません。 –

+1

カラムごとに指定するには、filterable属性をfalseに設定して 'columns'配列にエントリを指定する必要があります。繰り返しますが、グリッドを作成するためにコードがどのように設定されているかによっては、これが不可能な場合があります –

0

私は質問にそれを言及しませんでした私はグリッドのAutoGenerate()機能を使用していたので、Filterableの設定に簡単にアクセスすることはできません。その場合の

つの回避策は次のとおりです。

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(); 
3

あなたが列を設定していない場合、グリッドは、このようなデータバインドされたイベントのように、初期化された後、あなたは、フィルタボタンを隠すことができます。ここでは、特定のフィールド上のフィルタボタンを隠し、一つの方法です:

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

それらをすべて非表示にするには...クライアント側(jqueryの)剣道グリッドの

$("#MyGrid").find(".k-header").find(".k-grid-filter").css("visibility","hidden"); 
0

あなたが濾過可能に置くことができます:偽、 gridable全体に対してfilterable:trueを設定した後の個々の列について

例えば、

フィールド: "Margin01"、 幅:40、 濾過可能:偽、 タイトル: "0-"

関連する問題