$(document).ready(function() {
var agenciesData = new kendo.DataToken.DataSource({
type: 'webapi',
transport: {
read: { url: "/api/Agencies/", dataType: "json", data: { activity: getActivity() } },
create: { url: "/api/Agencies", type: "POST", dataType: "json" },
destroy: { url: "/api/Agencies/{0}", type: "DELETE" },
update: { url: "/api/Agencies/{0}", type: "PUT" },
idField: "ID"
},
filter: [{ field: "Activity", operator: "eq", value: getActivity() }],
pageSize: 15,
page: 1,
total: 0,
serverPaging: true,
serverSorting: true,
serverFiltering: true,
schema: {
data: "Data",
total: "Total",
model: {
id: "ID",
fields: {
ID: { editable: false, type: "number" },
AgencyName: { type: "string" },
AgentName: { type: "string" },
Address: { type: "string" },
City: { type: "string" },
Tel1: { type: "string" },
Tel2: { type: "string" },
Pele: { type: "string" },
Activity: { type: "number" },
ToDate: { type: "date" }
}
}
}
});
$("#agenciesGrid").kendoGrid({
dataSource: agenciesData,
toolbar: [{ text: "valid", className: "validAgents" }, { text: "not valid", className: "notValid" }, { text: "all", className: "allAgents" }, { text: "potential", className: "potetial" }],
editable: false,
navigatable: true,
sortable: true,
autoBind: false,
height: 430,
pageable: { refresh: true },
columns: [
{ field: "ID", hidden: true },
{ field: "AgencyName", title: "agency", width: 150, filterable: { cell: { operator: "contains" } } },
{ field: "AgentName", title: "agent", width: 150, filterable: { cell: { operator: "contains" } } },
{ field: "Address", title: "address", width: 200, template: "#= Address + ' ' + City #", filterable: false },
{ field: "Tel1", title: "phones", width: 300, template: "#= Tel1 + ' : ' + Tel2 + ' : ' + Pele #", filterable: false },
{ field: "Activity", title: "active", width: "90px" },
{ field: "ToDate", title: "end Contract", type: "date", width: 90, format: "{0:dd/MM/yyyy}", parseFormats: ["yyyy-MM-ddThh:mm:ss"] }
]
});
$(".validAgents").click(function() { //valid
$("#myActivity").val("1");
$('#agenciesGrid').data().kendoGrid.dataSource.read({ activity: "1" });
});
$(".notValid").click(function() {//notValid
$("#myActivity").val("2");
$('#agenciesGrid').data().kendoGrid.dataSource.read({ activity: "2" });
});
$(".potetial").click(function() {//potetial
$("#myActivity").val("3");
$('#agenciesGrid').data().kendoGrid.dataSource.read({ activity: "3" });
});
});
function getActivity(){
var myActivity = $("#myActivity").val();
return myActivity;
}
При использовании кендо сетки уже отфильтрованный параметром, как: $ ('# someGrid') данных() kendoGrid.dataSource.read ({активность: значение})..; я вижу ГЭТ: https://localhost:44305/api/Agencies/?sort=&page=1&pageSize=15&group=&filter=&activity=1кендо сетки сервер повторно фильтрации источника данных
сетки фильтра, как ожидается, но, когда я хочу сделать подкачки, сортировка, обновление - я получаю всю информацию, игнорируя фильтр, который я сделал. и я вижу ПОЛУЧАЕТЕ: https://localhost:44305/api/Agencies/?sort=&page=1&pageSize=15&group=&filter=
Как я могу сохранить мой фильтр состояние, чтобы сделать подкачки и сортировку на данных пришли со стороны сервера? даже когда я использовал диффере подход, как «прокручивать: {виртуальные: истинные}», и когда я прокрутите вниз - каждый запрос без фильтрации ...
Благодаря
попробуйте использовать метод 'dataSource.filter (filter)' вместо того, чтобы помещать фильтр в '.read (filter)'. Если '{activity: value}' не является фильтром, а дополнительные данные должны быть переданы на сервер, попробуйте поместить его в 'transport.read.data' вместо – user1102901
, как я могу пейджинговать отфильтрованные данные, не уничтожая набор данных? – AloniSoft
Вы имели в виду использовать подкачку и сортировку на стороне клиента? Таким образом, он не будет вызывать сервер снова, когда вы захотите перейти на страницу и сортировать. – user1102901