高手来~~~~如何获取AdvancedDataGrid的树的节点值呢
AdvancedDataGrid控件中的第一列是树型图,因为我是用GroupingCollection进行绑定的,所以是用的分组来实现树的层级关系的,现在我想获取到这个树中的节点值,应该如何进行呢?
(ps:selectedItem是无法获取到选中节点值的,因为这个节点值就是GroupingCollection中分组的节点,请高手帮帮忙)
[解决办法]
用递归应该就可以吧。
楼主试一下这段代码:
private function getCurrentSelectedItem():Object{ var currentSelectedItem:Object = null; var item:Object = grid.selectedItem; if (!item) return currentSelectedItem; // 假设groupingCollection是表格的GroupingCollection类型数据源 // 并且它的source是ArrayCollection, childrenField是children var collection:ArrayCollection = groupingCollection.source as ArrayCollection; for (var i:int = 0; i < collection.length; i++) { var object:Object = collection.getItemAt(i); if (object == item) { currentSelectedItem = object; break; } else if (includeItem(object.children, item, "children")) { currentSelectedItem = object; break; } } return currentSelectedItem;}private function includeItem(list:Object, item:Object, childField:String):Boolean{ var result:Boolean = false; var i:int = 0; var object:Object = null; if (list is IList) { for (i = 0; i < (list as IList).length; i++) { object = (list as IList).getItemAt(i); if (object == item) { result = true; break; } else { if (object && object[childField]) result = includeItem(object[childField], item, childField); } } } else if (list is Array) { for (i = 0; i < (list as Array).length; i++) { object = (list as Array)[i]; if (object == item) { result = true; break; } else { if (object && object[childField]) result = includeItem(object[childField], item, childField); } } } return result;}