Вот один из способов сделать это с клиентской стороны после возвращения первоначального DATASOURCE demo showing client side filtering
В этом примере, который в версии javaScript мы используем событие DataBound, и когда сетка восстанавливается до dataSource
, мы запускаем эту функцию:
function onDataBound(e){
var grid = $('#grid').data('kendoGrid');
if(initialFilter)
{
grid.dataSource.filter({ field: "ShipName",
operator: "contains",
value: "Han" });
initialFilter = false;
}
}
initialFilter
- глобальная переменная, которая является bool
, которая позволит нам управлять этой функцией и запускать ее один раз. В противном случае это будет продолжаться в цикле.
затем применяя фильтр к источнику данных, у нас есть три части к нему.
{{fieldName},{operator},{value}}
Таким образом, в этом примере я смотрю на ShipName, фильтрование, где значение Han
содержится в ShipName.
прикрепить это с помощью MVC версии просто добавьте его в опции событий т.е.
.Events(event => event.DataBound("onDataBound"))
еще один способ сделать это, чтобы применить фильтр во время инициализации сетки и таким образом данные фильтрованной без чтобы решить проблемы, представленные первой версией. filter at initialization
С этой версией я просто изменял DataSource и применяя тот же фильтр, как часть установки DataSource как так:
dataSource: {
type: "odata",
transport: {
read: "//demos.telerik.com/kendo-ui/service/Northwind.svc/Orders"
},
schema: {
model: {
fields: {
OrderID: {
type: "number"
},
Freight: {
type: "number"
},
ShipName: {
type: "string"
},
OrderDate: {
type: "date"
},
ShipCity: {
type: "string"
}
}
}
},
pageSize: 20,
serverPaging: true,
serverFiltering: true,
filter: {
field: "ShipName",
operator: "contains",
value: "Han"
}
},
Таким образом, в конфигурации источника данных вы бы добавить что-то вроде этого:
.Read(read => read.Action("",""))
.Model(model => {model.Id("ShipId");})
.Filter(filter =>
{
filter.Add(f => f.ShipName).Contains("Han");
})
Надеюсь, это даст вам хорошую отправную точку, но если вам нужна дополнительная информация, дайте мне знать, и я расширю ответ для вас.
Вы пытаетесь сделать этот фильтр, прежде чем извлекать источник данных, то есть. вы не хотите, чтобы сервер представил результаты для «Архивированного» или вытащил данные обратно, затем фильтр. Также вы выполняете фильтрацию на стороне сервера или на стороне клиента? –
Я хочу отменить данные, а затем отфильтровать на клиентском – BBR