剑道网格 - 显示来自json的分页总数

时间:2017-11-09 06:57:59

标签: javascript json pagination kendo-grid

我正在开发一个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个数据并通过页面更改功能获取下一页数据。

1 个答案:

答案 0 :(得分:0)

您需要做的就是将页面大小和可分页属性设置为一个:

    pageable: {
        input: true,
        numeric: false,
        refresh: true,
        pageSizes: true,
        pageSize: 10
    },

只需通过您的数据源引入您的数据,它将以10为增量将网格设置为每个页面。