Поддержка Kendo UI Grid OData.SharePoint Online также поддерживает OData V3.Я могу правильно настроить его для чтения данных в соответствии с приведенным ниже кодом.
Но у меня есть список с более чем 5k записями, а SP Online имеет пороговое ограничение в 5k.
Поэтому я хочу настроить подкачку / фильтрацию / сортировку сервера, и я попробовал следующий подход.
Здесь он правильно отображает первые 500 элементов, но следующее нажатие кнопки не работает с динамическим URL.По запросу, он предоставляет следующий запрос для выполнения, но как прикрепить его к событию смены пейджера.
любая помощь будет оценена!
Я попытался запустить несколько API с использованием Javascript / angularjs и подготовитьлокальная переменная, сначала все элементы, а затем назначенные сеткеэто работает, но производительность очень плохая.так что ожидается динамический подход.
var kdatasource = new kendo.data.DataSource({
type: "odata",
transport: {
read: {
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('ListTitleWithMoreThan5K')/items" //$scope.NextQuery,
dataType: "json",
contentType: "application/json",
beforeSend: function (xhr) {
xhr.setRequestHeader("Accept", "application/json; odata=verbose")
}
}
},
sort: { field: "ID" , dir: "desc"},
requestEnd: function(e) {
console.log(e);
var response = e.response;
var type = e.type;
console.log(type); // displays "read"
if(response)
{
//console.log(e.response.d.__next);
$scope.NextQuery = e.response.d.__next; //getting next query in response. SP Online have 'SkipToken' not 'skip' for listitems.
console.log($scope.NextQuery);
}
},
schema: {
data: function (data) {
return data.d && data.d.results ? data.d.results : [data.d];
},
total: function (data) {
return 3000;//we can take care this with separate itemcount query
},
model: {
fields: {
"ID": { type: "number" },
"Title": { type: "string" }
}
},
errors: function (response) {
console.error(response);
return response.error;
}
},
page:1,
pageSize: 500, // this will become "$top" in query
serverPaging: true,
serverFiltering: true,
serverSorting: true
});
$("#grid").kendoGrid({
dataSource: kdatasource,
columns: [{
field: "ID",
title: "ID",
width: 240
},{
field: "Title",
title: "Title",
width: 240
}],
height: 550,
groupable: false,
sortable: true,
filterable: true,
pageable: {
refresh: false,
//pageSize: 10,
pageSizes: [100, 200, 500, 1000],
buttonCount: 5,
change:function(e)
{
console.log("grid pager clicked!");
console.log(e);
//how to rebind grid for 2, 3, page number click?
}
} ,
dataBound: function(e) {
//console.log(e); // This is calling!
//console.log("dataBound");
}
});
Пейджинг / Фильтр / Сортировка должны работать с SharePoint с использованием запросов REST API