Я не уверен, что я делаю это правильно, поскольку я новичок в целых этих системах, но я хочу управлять своими данными сетки кендо (разбиение на страницы, фильтры и т. Д.). Я использую этот ODataController в ASP.NET Web API 2, управляемый из версии 4 пакета OData, который поддерживает такие параметры, как: $ top, $ skip, $ count. и т. д. ...kendo - datasource - параметрMap не связывает параметры
Должно быть прочитано много неполного мира привет, образцы, стека,):
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<title>AngularJS</title>
<link href="../content/shared/styles/examples-offline.css" rel="stylesheet">
<link href="../Content/telerik/content/web/kendo.common.min.css" rel="stylesheet">
<link href="../Content/telerik/content/web/kendo.rtl.min.css" rel="stylesheet">
<link href="../Content/telerik/content/web/kendo.default.min.css" rel="stylesheet">
<script src="../Content/telerik/scripts/jquery.min.js"></script>
<script src="../Content/telerik/scripts/angular.min.js"></script>
<script src="../Content/telerik/scripts/kendo.all.min.js"></script>
<script src="../content/shared/js/console.js"></script>
<script>
</script>
</head>
<body>
<a class="offline-button" href="../index.html">Back</a>
<div id="example" ng-app="KendoDemos">
<div ng-controller="MyCtrl">
<kendo-grid options="mainGridOptions"></kendo-grid>
</div>
</div>
<script>
angular.module("KendoDemos", [ "kendo.directives" ]);
function MyCtrl($scope) {
$scope.mainGridOptions = {
dataSource: {
type: "odata-v4",
transport: {
//read: "http://demos.telerik.com/kendo-ui/service/Northwind.svc/Employees"
read: "/odata/people",
dataType: "json"
},
parameterMap: function (data, operations) {
var paramMap = kendo.data.transports.odata.parameterMap(data);
if (paramMap.$inlinecount) {
if (paramMap.$inlinecount == "allpages") {
paramMap.$count = true;
}
delete paramMap.$inlinecount;
}
if (paramMap.$take) {
paramMap.$top = paramMap.$take;
delete paramMap.$take;
}
if (paramMap.$filter) {
paramMap.$filter = paramMap.$filter.replace(/substringof\((.+),(.*?)\)/, "contains($2,$1)");
}
return paramMap;
},
schema: {
data: function (data) { return data.value; },
total: function (data) { return data['@odata.count']; },
model: {
id: "Email",
fields: {
Name: {type: "string"},
Email: {type: "string"},
}
}
},
pageSize: 5,
serverPaging: true,
serverSorting: true
},
sortable: true,
pageable: true,
//detailTemplate: kendo.template($("#template").html()),
dataBound: function() {
this.expandRow(this.tbody.find("tr.k-master-row").first());
},
columns: [
{
field: "Name",
title: "Name",
width: "200px"
},
{
field: "Email",
title: "E-Mail",
width: "200px"
},
]
};
}
</script>
</body>
</html>
В коде используется введенная анонимная функция, которая позволяет определять пользовательские параметры и отображать их.
parameterMap: function (data, operations) {
var paramMap = kendo.data.transports.odata.parameterMap(data);
if (paramMap.$inlinecount) {
if (paramMap.$inlinecount == "allpages") {
paramMap.$count = true;
}
delete paramMap.$inlinecount;
}
if (paramMap.$take) {
paramMap.$top = paramMap.$take;
delete paramMap.$take;
}
if (paramMap.$filter) {
paramMap.$filter = paramMap.$filter.replace(/substringof\((.+),(.*?)\)/, "contains($2,$1)");
}
return paramMap;
},
schema: {
data: function (data) { return data.value; },
total: function (data) { return data['@odata.count']; },
model: {
id: "Email",
fields: {
Name: {type: "string"},
Email: {type: "string"},
}
}
},
pageSize: 5,
serverPaging: true,
serverSorting: true
},
I, после проверки над вещами, и изменить немного здесь и там, как, настройка схемы, а также добавить новые условия (как они были оставлены пустыми на образце кода).
Теперь, что выдается мне, что после запуска моего приложения, я заметил, даже это не касается моей сниппета коды ...
if (paramMap.$take) {
paramMap.$top = paramMap.$take;
delete paramMap.$take;
}
но даже не применяется другими раздел, а также отладчик JavaScript не будет нарушать функцию .... поэтому, например, он не будет добавлять такие параметры, как, count ...
Итак, я пришел сюда, чтобы убедиться, что я иду по правильному пути, и во-вторых, если это правильно, то как это исправить. ..
я также кое-что об изменении вещей в JSON читать, но я предполагаю, что мои данные JSON, так как я не определить любую встроенную строку ...
так вы говорите, что мне нужно обновить кендо? – deadManN
Я не обновлял свою библиотеку, но я предполагаю, что это проблема, поскольку моя библиотека старая, и поскольку odata-v4 возвращает тот же результат, что и любое неизвестное значение, поэтому ваш ответ должен быть правильным (как говорят все остальные это тоже) – deadManN