Ag网格树数据

时间:2017-01-13 10:12:33

标签: angular ag-grid

  

我有一个带有树数据的ag网格,它从视图中过滤出来   被删除的行

[  
   {  
      "name":"test",
      "children":[  
         {  
            "name":"test",
            "ROWSTATE":"DELETE"
         },
         {  
            "name":"test",
            "ROWSTATE":"DELETE"
         }
      ]
   }
]
  

这是我的数据,过滤器配置就像这样

isExternalFilterPresent: () => { return true; },
            doesExternalFilterPass: (node: RowNode) {
        return node.data.ROWSTATE !== ROWSTATE.DELETE;
    }
  

网格没有显示任何值,因为所有的chilrens都没有   我想通过过滤器功能。我想要做的是使网格   显示包含父级的行。

1 个答案:

答案 0 :(得分:0)

这也发生在我身上。我作为一种解决方法所做的是修改gridOptions上的getNodeChildDetails函数,以便检查是否所有子项都被删除。如果他们都是,那么不要返回任何东西。这样,ag-grid不会将该行视为父行。

var gridOptions = {
    ...
    getNodeChildDetails: function(row) {
        if (row.children) {
            for (var i = 0; i < row.children.length; i++) {
                if (row.children[i].ROWSTATE != 'DELETED') {
                    return {
                        group: true,
                        expanded: true,
                        children: row.children
                    };
                } 
            }
        } 
    },
    ...
};

这是低效的,因为它必须遍历所有子节点以检查是否所有子节点都被删除。但是,这是一种有效的解决方法。

不要忘记将组单元格渲染器添加到将负责子项扩展和收缩的列中:

var columnDefs = [
    ...
    {
        headerName: ...
        cellRenderer: 'group'
    }
];

当然,这适用于任何框架,无论是纯粹的javascript还是角度。