Hi Everyone,
I want to share how to display json data in treetable.
//Create an instance of the table control
var oTreeTable = new sap.ui.table.TreeTable({
title:"",
width : "100%",
columns: [
new sap.ui.table.Column({
label: "",
template: ""
}),
new sap.ui.table.Column({
label: "",
template: ""
}),
new sap.ui.table.Column({
label: "",
template: ""
}),
],
selectionMode: sap.ui.table.SelectionMode.None,
enableColumnReordering: false,
expandFirstLevel: false, //if true expand whole tree showing all of its root elements
toggleOpenState: function(oEvent) {
}
})
//binding json data to treetable
var data = {
root: nOdata,
};
var oTreeModel = new sap.ui.model.json.JSONModel();
oTreeModel.setData(data);
oTreeTable.setModel(oTreeModel);
oTreeTable.bindRows({
path: '/root',
});
//odata into json
var oModel1 = new sap.ui.model.json.JSONModel();
var oData = [
{
"__metadata" : {
"id" : "http://url",
"uri" : "http://url",
"type" : "Entity name"
},
"Child1" : "",
"Child2" : "",
"Child3" : "",
"Child4" : "",
"Child5" : "",
"Child6" :
},
] // write all elements over here
var nOdata = [];
var tmpArr = [];
for (key in oData) {
nID = oData[key]['child1'];
pID = oData[key]['child2'];
if(pID == "") {
tmpArr = oData[key];
tmpArr['children'] = [];
newOdata.push(tmpArr);
}
else {
found = searchAndAddNode(nOdata, oData[key]);
//console.log(found);
}
}
function searchAndAddNode(node, nodeToAdd) {
found = false;
for (key in node) {
if(node[key]['child1'] == nodeToAdd['child2']) {
tmpArr = nodeToAdd;
tmpArr['children'] = [];
node[key]['children'].push(tmpArr);
found = true;
return found;
}
}
if(!found) {
for (key in node) {
found = searchAndAddNode(node[key]['children'], nodeToAdd);
}
}
return found;
}