Hierarchical Grid with Nested Objects
I've got some javascript objects like this (it's typescript but you get the idea):
export class Release {
field1: string;
field2: number;
workitems: WorkItem[];
}
export class WorkItem {
field3; string;
field4; number;
}
Since I'm working directly with javascript objects (using pouchdb in this case) I don't have any foreign keys and I'm not calling a service. The parent object simply has an array of child objects.
I'd like to setup a hierarchical grid with Releases as the master and WorkItems as the detail. Can this be done?
Thanks!
SIGN IN To post a reply.
1 Reply
PK
Prasanna Kumar Viswanathan
Syncfusion Team
March 21, 2017 05:22 AM UTC
Hi Kelly,
Thanks for contacting Syncfusion support.
We have analyzed your query and we suspect that you want to create a Grid with hierarchical structure. So, we suggest you to use the detail template in Grid. We have filtered the data for the child Grid using the column(“OrderID”) details of parent row value and rendered resultant data as child grid in the detailsDataBound event of ejGrid.
Refer the below code example.
| [grid.html] <template> <div> <ej-grid id="Grid" e-data-source.bind="dataSource" e-edit-settings="editSettings" e-toolbar-settings="toolbarSettings" e-details-template="#tabGridContents" // detail template defining e-on-details-data-bound.delegate="eventdatabound($event.detail)" > //detaildata =bound event defining <ej-column e-field="OrderID" e-is-primary-key="true" ></ej-column> <ej-column e-field="EmployeeID" ></ej-column> <ej-column e-field="CustomerID" ></ej-column> </ej-grid> <div id="tabGridContents"> // template <div id="detailGrid"></div> </div> </div> </template> |
| [grid.js] export class Grid { constructor() { this.dataSource = dataSource; ------------------- } eventdatabound(e){ var collectionData = e.data['ShipDetails']; // Get the dataSource for ShipDetails e.detailsElement.find("#detailGrid").ejGrid({ // detail template Grid rendering dataSource: collectionData, allowSelection: false, --------------- columns: [ ------------ ] }); } } |
Refer the dataSource for our sample.
| var dataSource = [{ OrderID: 10280, CustomerID: "BERGS", EmployeeID: 2, ShipDetails:[{ShipName:"Berglunds snabbköp", ShipCity: "Luleå", ShipCountry: "Sweden",}], }, { OrderID: 10265, CustomerID: "BLONP", EmployeeID: 2, ShipDetails: [{ShipName:"Blondel père et fils", ShipCity: "Strasbourg",ShipCountry:"France"}] }] |
We have prepared a sample and it can be downloadable from the below location.
Refer the below documentation.
Regards,
Prasanna Kumar N.S.V
SIGN IN To post a reply.
- 1 Reply
- 2 Participants
-
KH Kelly Harrison
- Mar 16, 2017 06:16 PM UTC
- Mar 21, 2017 05:22 AM UTC