I want to fill a grid with a complex json returned from a webservice. My json contains two things:
- data: array with the records that will fill the grid
- columns: array with the config(layout) of the grid
I have successfully filled the grid with the "data" by specifying the schema.data.
My problem is with the grid config (layout). I get the columns array on the `requestEnd` event of the datasource and i add it to the `customersSource` (datasource) so i can access it in the gridOptions.
The problem is that even though when i log the `customersSource` object i see that the cols array i added, is there and is filled with the proper data the `$scope.mainGridOptions.columns` isn't set to `customersSource.cols`.
I think that this may have to do with the fact that `customersSource.cols` is set asynchronously but shouldn't angular take care of this with it's databinding?
Also i have read in Data source vs. Angular that i may have to set something as Observable but i am confused of what to do exactly.
How can i fix this?
Here is my code
Here is my JSON
I created a plunker of my testing project. As you can see i can fill the grid but i have a problem with the mainGridOptions.columns. Any help will be much appreciated!
http://plnkr.co/edit/5pjFQGkgTivqVkxsFBse
- data: array with the records that will fill the grid
- columns: array with the config(layout) of the grid
I have successfully filled the grid with the "data" by specifying the schema.data.
My problem is with the grid config (layout). I get the columns array on the `requestEnd` event of the datasource and i add it to the `customersSource` (datasource) so i can access it in the gridOptions.
The problem is that even though when i log the `customersSource` object i see that the cols array i added, is there and is filled with the proper data the `$scope.mainGridOptions.columns` isn't set to `customersSource.cols`.
I think that this may have to do with the fact that `customersSource.cols` is set asynchronously but shouldn't angular take care of this with it's databinding?
Also i have read in Data source vs. Angular that i may have to set something as Observable but i am confused of what to do exactly.
How can i fix this?
Here is my code
var customersSource = new kendo.data.DataSource({ transport: { read: { url: "http://....", dataType: "json" } }, schema: { data: "data" }, requestEnd: function (e) { this.cols = e.response.columns; } });$scope.mainGridOptions = { dataSource: customersSource, // OK columns: customersDataSource.cols, // undefined - uses default height: 500, scrollable: true, selectable: true };Here is my JSON
{ "data": [ { "id": 0, "firstname": "Dalton", "lastname": "Holden", "gender": "male", "email": "daltonholden@tellifly.com", "phone": "871-407-2973", "address": "22 National Drive, Brenton, Louisiana", "birthday": "21/04/1965", "currency": "GBP" }, { "id": 1, "firstname": "Allyson", "lastname": "Odom", "gender": "female", "email": "allysonodom@tellifly.com", "phone": "922-548-2725", "address": "44 Quincy Street, Thynedale, Georgia", "birthday": "28/08/1961", "currency": "CHF" }, { "id": 2, "firstname": "Sweet", "lastname": "Branch", "gender": "male", "email": "sweetbranch@tellifly.com", "phone": "880-593-2244", "address": "81 Fenimore Street, Veguita, Missouri", "birthday": "08/08/1953", "currency": "AUD" } ], "columns": [ { "field": "firstname", "title": "Frist Name", "width": 200, "attributes": { "class": "", "style": "text-align: left;" }, "headerAttributes": { "class": "table-header-cell", "style": "text-align: left;" } }, { "field": "lastname", "title": "Last Name", "attributes": { "class": "", "style": "text-align: left;" }, "headerAttributes": { "class": "table-header-cell", "style": "text-align: left;" } }, { "field": "gender", "title": "Gender", "attributes": { "class": "", "style": "text-align: left;" }, "headerAttributes": { "class": "table-header-cell", "style": "text-align: left;" } }, { "field": "email", "title": "e-mail", "attributes": { "class": "", "style": "text-align: left;" }, "headerAttributes": { "class": "table-header-cell", "style": "text-align: left;" } }, { "field": "phone", "title": "Phone Number", "attributes": { "class": "", "style": "text-align: right;" }, "headerAttributes": { "class": "table-header-cell", "style": "text-align: right;" } }, { "field": "address", "title": "Address", "attributes": { "class": "", "style": "text-align: left;" }, "headerAttributes": { "class": "table-header-cell", "style": "text-align: left;" } }, { "field": "birthday", "title": "Birthday", "attributes": { "class": "", "style": "text-align: center;" }, "headerAttributes": { "class": "table-header-cell", "style": "text-align: center;" } }, { "field": "currency", "title": "Currency", "attributes": { "class": "", "style": "text-align: center;" }, "headerAttributes": { "class": "table-header-cell", "style": "text-align: center;" } } ]}I created a plunker of my testing project. As you can see i can fill the grid but i have a problem with the mainGridOptions.columns. Any help will be much appreciated!
http://plnkr.co/edit/5pjFQGkgTivqVkxsFBse