我想要默认Kendo UI网格在页面加载时被过滤。我有一个带有布尔值的列,我只需要在页面加载时显示带有“false”的列,但允许用户在清除过滤器时看到它们。Kendo 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);
}
我试图此解决方案的呼吁DataBound事件但当用户清除过滤器,然后试图组或设置其他的过滤器,该过滤器会重新出现的功能。我在视图中使用了Razor语法,并希望在那里设置一些东西。
更新:目前,我已经将示例函数封装在if级别变量中,该变量被设置为true/false,基于之前是否调用过,但我觉得这是一个基元解。
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);
}
}
我认为你可以使它比必要的更加复杂。你不能只把过滤器放在你的数据源定义上吗?然后,绑定到网格时,该列将被过滤。然后,使用用户界面,用户仍然可以清除此过滤器 - 您的数据源定义只是在最初设置它。 –
要添加到我的初始评论中,请为您的数据源配置添加如下内容:filter:{field:“YourColumn”,operator:“equals”,value:false}。 –
你已经指出了我正确的方向,这就是我正在寻找的。但正如在问题中所述,我使用的是剃刀语法,所以Filter扩展不包含JSON数组。它需要'Action>()',我发现很难找到任何围绕这个的文档。 –
theB3RV