我想要默認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