2017-08-14 15 views
0

ページロード時に剣道UIグリッドをデフォルトに設定しようとしています。私はブール値を持つカラムを持っています。私は、ページロード時に "false"を表示するだけで、フィルタをクリアすればユーザはそれらをすべて見ることができます。剣道UIデフォルトのグリッドフィルタ値

例:http://www.telerik.com/forums/adding-filters-to-grid-s-source

function updateSearchFilters(grid, field, operator, value) { 
     var newFilter = { field: field, operator: operator, value: value }; 
     var dataSource = grid.data("kendoGrid").dataSource; 
     var filters = null; 
     if (dataSource.filter() != null){ 
      filters = dataSource.filter().filters; 
     }  
     if (filters == null) { 
      filters = [newFilter]; 
     } 
     else { 
      var isNew = true; 
      var index = 0; 
      for(index=0; index < filters.length; index++) { 
       if (filters[index].field == field) { 
        isNew = false; 
        break; 
       } 
      } 
      if (isNew){ 
       filters.push(newFilter); 
      } 
      else { 
       filters[index] = newFilter; 
      } 
     } 
     dataSource.filter(filters); 
    } 

私はデータバインドイベントに関数を呼び出すために、このソリューションを試してみましたが、ユーザがフィルタをクリアした後、グループにしようとか、他のフィルタを設定すると、このフィルタは再表示されます。ビューでRazorの構文を使用していて、そこに設定するものがあることを期待していました。

更新:当分の間、以前に呼び出されたかどうかに基づいてtrue/falseに設定されたクラスレベルの変数のif関数に例の関数をラップしましたが、これはプリミティブ溶液。

function onDataBind(grid, field, operator, value){ 
     if(!alreadyFiltered) //class level variable that is set to true after dataSource.filter(filters); 
      updateSearchFilters(grid, field, operator, value); 
     } 
    } 
+0

http://docs.telerik.com/aspnet-mvc/helpers/grid/configuration#filter

だから、多分それはこのような何かを探してしまいます。あなたは単にあなたのデータソースの定義にフィルタを置くことはできませんか?次に、グリッドにバインドされると、列がフィルタリングされます。 UIを使用すると、ユーザーはこのフィルタをクリアすることができます。データソースの定義では、最初にフィルタを設定するだけです。 –

+0

私の最初のコメントに追加するには、次のようなものがあります:データソース設定にfilter:{フィールド: "YourColumn"、演算子: "equals"、値:false} –

+0

あなたは正しい方向に私を指摘しました。これが私が探しているものです。しかし、質問に記載されているように、私は剃刀構文を使用しているので、Filter拡張機能はJSON配列をとらない。これは 'Action >()'を取ります。これが正確であるかどうかのドキュメントを見つけるのは難しいです。 – theB3RV

答えて

1

私の最初のコメントを回答に更新しました。基本的に、フィルタを使用してデータソースを定義すると、初期状態のデータソースが定義され、ユーザーは引き続きUI /コントロールを使用してフィルタを変更することができます。 JavaScriptの実装のために

、これは次のようになります。

dataSource: { 
    // ... other config 
    filter: { field: "YourColumn", operator: "equals", value: false } 
} 

を使用すると、列メニューのフィルタリングを使用している場合は、このフィルタは変更するユーザーに対して表示されます - あなただけの初期状態を定義しています。

あなたはMVC実装を使用していると述べました。私は以前にそれらのヘルパーを使っていません。私はそれがちょうど同様の構成方法を使用することの問題であると思うが、あなたのところでは、ドキュメントは明確ではないようだ。私はここに開始する:私はあなたが必要以上に、それはより複雑に作ることだと思い

.DataSource(dataSource => dataSource    
    .Filter(filters => 
    {  
     filters.Add(f => f.YourColumn).Equals(false); 
    } 
+0

これはまさにそれでした。ありがとうございました。 – theB3RV