在项目中用AdvancedDataGrid展示树形结构的数据,当用A.children.removeItemAt删除A节点的所有子节点后,发现A的图标仍然是文件夹。
查看AdvancedDataGrid的源代码,发现有个方法itemToIcon,而该方法决定了AdvancedDataGrid显示的图标。
在itemToIcon方法中是调用isBranch判断是否显示文件夹图标,而isBranch方法又调用_rootModel.canHaveChildren方法(这里_rootModel是IHierarchicalData)。
继续看HierarchicalData的源码,发现HierarchicalData的canHaveChildren方法的判断标准是
而HierarchicalData的hasChildren方法的判断标准是
于是新建了一个类MyHierarchicalData,该类的代码如下,
之后把AdvancedDataGrid的dataProvider改为MyHierarchicalData,大功告成。