ページロード時に剣道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);
}
}
:
http://docs.telerik.com/aspnet-mvc/helpers/grid/configuration#filter
だから、多分それはこのような何かを探してしまいます。あなたは単にあなたのデータソースの定義にフィルタを置くことはできませんか?次に、グリッドにバインドされると、列がフィルタリングされます。 UIを使用すると、ユーザーはこのフィルタをクリアすることができます。データソースの定義では、最初にフィルタを設定するだけです。 –
私の最初のコメントに追加するには、次のようなものがあります:データソース設定にfilter:{フィールド: "YourColumn"、演算子: "equals"、値:false} –
あなたは正しい方向に私を指摘しました。これが私が探しているものです。しかし、質問に記載されているように、私は剃刀構文を使用しているので、Filter拡張機能はJSON配列をとらない。これは 'Action>()'を取ります。これが正確であるかどうかのドキュメントを見つけるのは難しいです。 –
theB3RV