Я так близок и все же до сих пор...
Я использую угловую сетку кендо с конечной точкой MVC для данных. У меня нет проблем с отображением данных, поэтому я перешел к поисковому вызову. Пейджинг на стороне клиента работает, но поскольку количество записей велико, я бы предпочел серверный пейджинг.
Здесь я чего-то не хватает. Моя сетка отображает "Показывает 1-5 из 18", поэтому она каким-то образом анализирует счет для легенды сетки, но фактическая сетка показывает все 18 строк?
у моего _layout есть среди других файлов:
<script src="@Url.Content("~/Scripts/kendo/2016.1.412/kendo.aspnetmvc.min.js")"></script>
моя сетка:
$("<div/>").appendTo(e.detailCell).kendoGrid({
dataSource: {
transport: {
read: function (f) {
$http.get('http://localhost:59722/SCat/GetSubCategories?categoryid=' + e.data.Id).
success(function (data, status, headers, config) {
f.success(data)
}).
error(function (data, status, headers, config) {
alert('something went wrong with subCategories')
console.log(status);
});
},
create: function (c) {
alert('adf');
$http.post('http://localhost:59722/Cat/AddNewSubCategory').
success(function (data, status, headers, config) {
f.success(data)
}).
error(function (data, status, headers, config) {
alert('something went wrong with update')
console.log(status);
});
}
},
pageSize: 5,
serverPaging: true,
serverFiltering: true,
schema: {
data: "Data",
total: "Total",
errors: "Errors"
}
},
pageable: true,
filterable: true,
editable: "inline",
toolbar: ["create"],
columns: [
{ field: "SubCategoryName", title: "Category Name" },
{ field: "SCategoryId", title: "Parent Id" },
{ command: ["edit"]}
]
})
}
})
Действие MVC:
public async Task<JsonResult> GetSubCategories([DataSourceRequest] DataSourceRequest request, int? categoryid)
{
int categoryId = categoryid ?? -9999;
if (categoryId == -9999)
{ return Json("[{Error -9999 for categoryId}]"); }
HttpResponseMessage responseMessage = await client.GetAsync(url + "/" + categoryId);
if (responseMessage.IsSuccessStatusCode)
{
var responseData = responseMessage.Content.ReadAsStringAsync().Result;
var x = JsonConvert.DeserializeObject<List<SubCategories>>(responseData);
return Json(x.ToDataSourceResult(request) , JsonRequestBehavior.AllowGet);
}
return Json("[{Error}]");
}
Fiddler 220 Json:
{ "Data":[
{"Id":1,"SubCategoryName":"asdfe","CategoryId":1},
{"Id":3,"SubCategoryName":"Self-Righteousness","CategoryId":1},
...removed brevity...
{"Id":18,"SubCategoryName":"Viuyhj","CategoryId":1}
{"Id":19,"SubCategoryName":"zcxv","CategoryId":1}
],
"Total":18,
"AggregateResults":null,
"Errors":null}
Теперь я думаю, что у меня что-то отсутствует в моей угловой сетке, потому что мой DataSourceRequest ВСЕГДА заполнен значениями по умолчанию.
Кроме того, если я явно назначаю значение страницы, все работает.
public async Task<JsonResult> GetSubCategories([DataSourceRequest] DataSourceRequest request, int? categoryid)
{
request.PageSize = 5;
....snip
}
Так что это имеет какое-то отношение к моей Угловой сетке, но мне не хватает чего???
Я также разместил это на форуме Telerik. Они ответили, что мне не хватает.
http://www.telerik.com/forums/angular-grid-datasourcerequest-pagesize-etc-always-default-values