在显示不同级别的分层集合时,是否有人知道如何查询ADG(或其行)以确定当前有多少行可见(即未折叠)?
换句话说,我想要一个函数告诉我在这个视图中可以看到7行
和1行可用
我认为这很简单但似乎无法在任何地方找到合适的关键字。
谢谢你!答案 0 :(得分:2)
您需要编写递归函数来迭代数据并使用AdvancedDataGrid的isItemOpen(item:Object):Boolean函数。像这样:
countOpenItems(root : Object) : int {
var openCount : int = 0;
if (grid.isItemOpen(item)) {
openCount++;
for each (var child : Object in item.children) {
openCount += countOpenItems(child);
}
}
return openCount;
}
此示例假设您的每个项都有一个名为children的属性,可以迭代。
注意:这将只返回打开的项目数 - 即使在第二个示例中,此函数也会返回0.如果要包含开放根,则必须单独考虑它们
答案 1 :(得分:1)
视图中的openNodes属性:IHierarchicalCollectionView似乎是我正在寻找的。将根节点传递给它似乎可以解决问题。我确信有更优雅的方式来写这个; - )
function recurse(o:Object):uint
{
// grab the general list, for commodity
var view:IHierarchicalCollectionView = adg.dataProvider as IHierarchicalCollectionView;
// I count as 1 if we're recursing through me
var total:uint = 1;
// check if I'm open
for each (var e:Object in view.openNodes)
{
if (e == o)
{
// if so I need to add my children and their families
for each (var c:Object in o.children)
total += recurse(c);
}
}
// if not I'm done, just counting myself
return total
}
注意:我认为有趣的一点是openNodes返回开放节点列表,即使它们不可见,就像这些节点位于封闭节点内一样。