我正在开发一个kendo网格。在主行上我显示了文件类型及其总数,当展开这一行时,然后显示分页中的所有数据。
在我的json中,如果我的总数据是100,那么在json中只有10个数据存在,当点击下一页时,我得到下一个10个json数据。
现在我想设置分页的总结果,但在我的示例中,我无法确定哪些问题。
为了表明这一点,我使用了以下示例 - http://jsfiddle.net/lhoeppner/y6KdK/
在我的例子中,我不确定我的json是错的还是我使用的方法是错误的。
修改 我的代码是 -
var jsonData = JSON.parse("{\"Report\":\"type1\",\"FileList\":[{\"owner\":\"machine-174\\\\admin\",\"path\":\"C:\\\\workarea\\\\WinTest1lakhfileinKB\\\\WinTest\\\\nGYh\\\\SMv\\\\U1P8FLx\\\\vMbhdo\\\\TgFSW\\\\42Ioulj0w.txt\"},{\"owner\":\"machine-174admin\",\"path\":\"C:\\\\workarea\\\\bada_data\\\\Employee Database - Copy (7) - Copy.mdb\"}],\"Count\":100,\"total\":10}");
$("#grid").kendoGrid({
editable: false,
resizable: true,
filterable: true,
columns: [{
field: "Report",
title: "Report"
}, {
field: "Count",
title: "Count"
}],
dataSource: {
data: jsonData,
schema: {
model: {
fields: {
Report: {
type: "string"
},
Count: {
type: "number"
}
}
}
}
},
detailInit: function (e) {
var dataSource = new kendo.data.DataSource({
data: e.data.FileList,
aggregate: [{
field: "size",
aggregate: "sum"
}],
schema:{
total:"total"
},
page: $("#grid").data("kendoGrid").dataSource.page(),
pageSize: 10,
resizable: true,
filterable: true,
scrollable: true
});
dataSource.fetch(function () {
totalsize = null;
var result = null;
results = dataSource.aggregates().size;
totalsize = getSize(results.sum);
});
childheader = "[{\"field\":\"path\",\"title\":\"Path\",\"width\":\"200px\"},{\"field\":\"owner\",\"title\":\"Owner\",\"width\":\"200px\"}]";
var childhead = JSON.parse(childheader);
var dataSource = $("<div/>").appendTo(e.detailCell).kendoGrid({
dataSource: {
data: e.data.FileList,
total:e.data.total,
editable: false,
pageSize: 10,
scrollable: true,
resizable: true,
filterable: true,
aggregate: [{
field: "size",
aggregate: "sum"
}],
schema: {
total:"total",
parse: function (data) {
$.each(data, function (idx, elem) {
elem.size = getSize(elem.size);
});
return data;
},
model: {
fields: {
path: {
type: "string"
},
owner: {
type: "string"
}
}
}
}
},
columns: childhead,
sortable: true,
pageable: true,
resizable: true,
filterable: true,
scrollable: true,
serverPaging: false,
pageable: {
pageSize: 2,
refresh: true,
change:function(e){
console.log("page change event");
}
}
});
}
});
function getSize(val) {
var bytes = val;
var size = null;
var sizes = ['Bytes', 'KB', 'MB', 'GB'];
if (bytes > 0) {
var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
size = Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
return size;
}
}
我的例子在这里 - https://jsfiddle.net/pporwal26/2ub1rvc2/8/
在这个例子中,我想显示每页2个数据和总共10个页面,即使我在json中有2个数据并通过页面更改功能获取下一页数据。
答案 0 :(得分:0)
您需要做的就是将页面大小和可分页属性设置为一个:
pageable: {
input: true,
numeric: false,
refresh: true,
pageSizes: true,
pageSize: 10
},
只需通过您的数据源引入您的数据,它将以10为增量将网格设置为每个页面。