$(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').data().kendoGrid.dataSource.read({ activity: value }); я вижу получение: 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
вместо этого - person user1102901   schedule 20.08.2015transport.read.data
- person user1102901   schedule 20.08.2015transport.read.data
? - person user1102901   schedule 20.08.2015.notValid
. Каждый новый вызов сервера будет проверять значение активности. Вы щелкнули по нему? - person user1102901   schedule 20.08.2015data:function(){return{ activity: getActivity() };}
- person user1102901   schedule 20.08.2015filter: function(){return [{ field: "Activity", operator: "eq", value: getActivity() }];}
- person user1102901   schedule 21.08.2015