AG-Grid树数据结构

时间:2018-09-20 09:25:53

标签: angular ag-grid

我正在从剑道树列表移动到农业网格树数据网格。我的表格数据格式如下。但是Ag网格期望以树中节点的字符串数组形式的数据。我该如何使用/自定义下面带有ag网格的数据。

[  
   {  
      "fieldId":"A",
      "parentId":null,     
   },
   {  
      "fieldId":"B",
      "parentId":A,     
   },
   {  
      "fieldId":"C",
      "parentId":B,     
   },
]

我只能使用如下所示的“ getDataPath”为1级层次结构创建一个网格,但无法理解如何为更高层次结构做

this.getDataPath = function (data) {
    return [data.parentId, data.fieldId];
};

1 个答案:

答案 0 :(得分:1)

您需要对其进行循环扫描:

let data = [
  {"fieldId":"A", "parentId":null}, 
  {"fieldId":"B", "parentId":"A"},
  {"fieldId":"C", "parentId":"A"},
  {"fieldId":"D", "parentId":"B"},
  {"fieldId":"E", "parentId":"D"}
];
function getParentLoop(fieldId, path){
  let p = data.filter(i=>i.fieldId == fieldId)[0];
  if(p.parentId){
    path.unshift(p.fieldId);
    return getParentLoop(p.parentId, path)
  } 
  else {
    path.unshift(p.fieldId);
  }
  return path;
}
data.map(i=>{
  i.path=[]
  if(i.parentId){
    getParentLoop(i.parentId, i.path);
    i.path.push(i.fieldId);
  }
  else{
    i.path.push(i.fieldId)
  }
  return i;
});
console.log(data);

this.getDataPath = function (data) {
    return data.path;
};