cancel
Showing results for 
Search instead for 
Did you mean: 

UI5 - Tree Table not displaying properly

former_member303153
Discoverer
0 Kudos

Hello,

I'm trying to fill tree table with oData Service. But it is displaying as normal table not as tree table.

Please Help.

Below is .js code for setting up tree table rows

	var tableCarrier = this.getView().byId("treeTable");
	tableCarrier.setModel(nav);
		
	tableCarrier.bindRows({
			path: "/results",
		parameters: {
			countMode: "Inline",
		treeAnnotationProperties: {					hierarchyLevelFor: "Hierarchylevel",
	hierarchyNodeFor: "Nodeid",
	hierarchyParentNodeFor: "Parentnodeid",
	hierarchyDrillStateFor: "Drillstate"
						}
					}
				});

Below is XML code of view

<table:TreeTable id="treeTable" selectionMode="None" enableColumnReordering="false" expandFirstLevel="false">
<table:columns>
	<table:Column label="Description">
	<table:template>
	<Text text="{Nodedesc}"/>
	</table:template>
	</table:Column>
	<table:Column label="HierarchyLevel">
	<table:template>
	<Text text="{Hierarchylevel}"/>
	</table:template>
	</table:Column>
	<table:Column label="NodeID">
	<table:template>
	<Text text="{Nodeid}"/>
	</table:template>
	</table:Column>
	<table:Column label="ParentNodeID">
	<table:template>
		<Text text="{Parentnodeid}"/>
	</table:template>
       </table:Column>
</table:columns>
</table:TreeTable>

below is oData Response

View Entire Topic
0 Kudos

Hello,

You can try like below code.

Because I was having same flat structure to form a treetable.

in your Success method write like

success: function (oData) {

var data = oData.QuestionTree.results;

var flat = {};

for (var i = 0; i < data.length; i++) {

var key = 'id' + data[i].Id;

flat[key] = data[i];

flat[key].__metadata = "";

}

// child container array to each node

for (var i in flat) {

flat[i].children = []; // add children container

}

// populate the child container arrays

for (var i in flat) {

var parentkey = 'id' + flat[i].ParentId;

if (flat[parentkey]) {

flat[parentkey].children.push(flat[i]);

}

}

// find the root nodes (no parent found) and create the hierarchy tree from them

var root = [];

for (var i in flat) {

var parentkey = 'id' + flat[i].ParentId;

if (!flat[parentkey]) {

root.push(flat[i]);

}

}

var oJsonModel = new sap.ui.model.json.JSONModel();

oJsonModel.setData(root);

treeTable.setModel(oJsonModel);

treeTable.bindRows({

path: "/",

parameters: {

arrayNames: ['children'],

numberOfExpandedLevels: length

}

});

}

Thanks,