强制所有项目渲染器commitProperties? [英] Force all item renderers to commitProperties?
问题描述
将列表或网格中的所有项目渲染器强制为 code> commitProperties 还是执行其他方法?
-
grid.itemRenderer
属性将使
都初始化。 -
我还收到了
的建议,递归地遍历所有的
网格的孩子,并调用invalidateProperties所有UIComponent我找到的
。
任何想法?备注?
请记住,在Flex列表中,您正在处理虚拟化和itemRenderer回收,所以通常只有当前可见的itemRenderers存在,因此实际上需要更新。
以下内容适用于基于Spark列表的控件:
< pre $
for(var i:int = 0; i< sparkList.dataGroup.numElements; i ++)
{
var element:UIComponent = sparkList.dataGroup.getElementAt i)作为UIComponent;
if(element)
element.invalidateProperties();
else
trace(element+ i.toString()+不存在);
}
如果您有100个项目,则会更新10个可见的,忽略虚拟休息。
如果你正在使用mx DataGrid,你可能想尝试一个这样的变体,但是它不使用DataGroup / Spark虚拟化,所以我没有一个答案,你脱离了我的头。
PS我正在完成一个完全基于Spark的DataGrid,当我完成后,我会发布链接。
I have an item renderer that checks an external source for display information. If that information changes, I want to force all item renderer instances to check it.
What's the best way for force all the item renderers in a list or grid to either commitProperties
or execute some other method?
I've read that resetting the
grid.itemRenderer
property will make them all initialize.I've also received the suggestion to iterate recursively through all the grid's children and call
invalidateProperties
on all the UIComponents I find.
Any thoughts? Alternatives?
Remember that in Flex Lists you're dealing with virtualization and itemRenderer recycling, so generally only the currently visible itemRenderers actually exist, and are therefore the ones that actually need updating.
The following works for Spark list-based controls:
for ( var i:int=0; i< sparkList.dataGroup.numElements; i++ )
{
var element:UIComponent = sparkList.dataGroup.getElementAt( i ) as UIComponent;
if ( element )
element.invalidateProperties();
else
trace("element " + i.toString() + " wasn't there");
}
If you've got 100 items, this will update the 10 visible ones and ignore the virtual rest.
If you're working with mx DataGrid, you might want to try a variant of this- but it doesn't use DataGroup / Spark virtualization so I don't have an answer for you off the top of my head.
P.S. I'm putting the finishing touches on a completely Spark-based DataGrid, I'll post the link when I'm done.
这篇关于强制所有项目渲染器commitProperties?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!