首页 > 解决方案 > AG-Grid树数据结构

问题描述

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

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

我能够使用如下所示的“getDataPath”仅为 1 级层次结构创建 ag 网格,但无法理解如何为更高级别的层次结构做些什么

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

标签: angularag-grid

解决方案


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

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){
    i.path.push(i.fieldId);
    getParentLoop(i.parentId, i.path);
  }
  else{
    i.path.push(i.fieldId)
  }
  return i;
});
console.log(data);

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

推荐阅读