hello
i tried to use serverGrouping, but i still got this error
error: Uncaught TypeError: Cannot read property 'length' of undefined
here is my json.
full code in html
can someone help me how solve this error?
maybe the problem is schema
thank you
i tried to use serverGrouping, but i still got this error
error: Uncaught TypeError: Cannot read property 'length' of undefined
here is my json.
{"data":[{"Key":"Azure Getting Started","HasSubgroups":false,"Items":[{"Name":"Azure Getting Started","Price":540.00,"Self":"api/books/3","Id":3},{"Name":"Azure Getting Started","Price":150.00,"Self":"api/books/5","Id":5}],"Aggregates":{"Price":{"Sum":690.00,"Min":150.00,"Max":540.00},"Name":{"Count":2}},"Subgroups":[]},{"Key":"Entity FrameWork","HasSubgroups":false,"Items":[{"Name":"Entity FrameWork","Price":350.00,"Self":"api/books/2","Id":2}],"Aggregates":{"Price":{"Sum":350.00,"Min":350.00,"Max":350.00},"Name":{"Count":1}},"Subgroups":[]}],"total":5,"aggregates":{"Price":{"Sum":1810.00,"Min":150.00,"Max":550.00},"Name":{"Count":5}}}full code in html
var grid = $("#ordersGrid").kendoGrid({ // specify the columns on the grid toolbar: ["create"], columns: [ { field: "Name", title: "Name", width: "100px" }, { field: "Price", title: "Price", width: "100px", aggregates: ["Min", "Max", "Sum"], footerTemplate: "Sum:#=Sum# Min:#=Min# Max:#=Max#", groupFooterTemplate: "Sum: " }, { command: ["edit", "destroy"], title: " ", width: "210px" } ], // the datasource for the grid dataSource: new kendo.data.DataSource({ // the transport tells the datasource what endpoints // to use for CRUD actions transport: { read: { url: "/apibook/readget", type: "POST" }, update: { url: "/apibook/update", type: "POST" }, destroy: { url: "/apibook/destroy", type: "POST" }, create: { url: "/apibook/create", type: "POST" }, parameterMap: function (options, operation) { if (operation != "read") { var result = {}; for (var i = 0; i < options.models.length; i++) { var book = options.models[i]; debugger; for (var member in book) { result["books[" + i + "]." + member] = book[member]; } } return result; } if (operation == "read") { var result = {}; result["take"] = options.take; result["skip"] = options.skip; result["page"] = options.page; if (options.sort != null) { for (var i = 0; i < options.sort.length; i++) { result["sort[" + i + "]." + "dir"] = options.sort[i].dir; result["sort[" + i + "]." + "field"] = options.sort[i].field; } } if (options.aggregate != null) { var aggregates = ""; debugger; for (var i = 0; i < options.aggregate.length; i++) { if (aggregates == "") { aggregates = options.aggregate[i].field + "-" + options.aggregate[i].aggregate; } else aggregates += "~" + options.aggregate[i].field + "-" + options.aggregate[i].aggregate; } result["aggregates"] = aggregates; //for (var i = 0; i < options.aggregate.length; i++) { // result["aggregate[" + i + "]." + "aggregate"] = options.aggregate[i].aggregate; // result["aggregate[" + i + "]." + "field"] = options.aggregate[i].field; //} } result["groupBy"] = "Name-asc"; if (options.filter != null) { var filter = options.filter; if (filter.filters != null) { for (var i = 0; i < filter.filters.length; i++) { result["filter[" + i + "].field"] = filter.filters[i].field; result["filter[" + i + "].op"] = filter.filters[i].operator; result["filter[" + i + "].value"] = filter.filters[i].value; } } } return result; } } }, group: { field: "Name", aggregates: [ { field: "Price", aggregate: "sum" }, { field: "Price", aggregate: "min" }, { field: "Price", aggregate: "max" }, ] }, aggregate: [ { field: "Price", aggregate: "sum" }, { field: "Price", aggregate: "min" }, { field: "Price", aggregate: "max" }, { field: "Name", aggregate: "count" }], // the schema defines the schema of the JSON coming // back from the server so the datasource can parse it schema: { // the array of repeating data elements (employees) data: function (response) { debugger; //return response.Data.Items; return response.data; }, groups: function (response) { debugger; //return response.Data.Items; return response.data; }, aggregates: function (response) { if (response.aggregates != null) return response.aggregates; else return {}; }, model: { id: "Id", fields: { // specify all the model fields, along with validation rules and whether or // not they can be edited or nulled out. Id: { editable: false, nullable: true }, Name: { editable: true }, Price: { editable: true, nullable: false, validation: { required: true } }, } }, // the total count of records in the whole dataset. used // for paging. total: "Count", }, // the number of records to show per page pageSize: 3, // do paging on the server serverPaging: true, // do sorting on the server serverSorting: true, serverAggregates: true, serverGrouping:true, batch: true }), // paging is enabled in the grid pageable: true, // editing happens inline, one row at a time. editable: "popup", selectable: true, // sort by multiple columns sortable: { mode: "multiple" }, change: function (e) { // get the current item selected in the grid var employee = this.dataSource.getByUid(this.select().data("uid")); // write out the employee id console.log(employee.id); } }).data("kendoGrid");can someone help me how solve this error?
maybe the problem is schema
thank you