如何在ItemRenderer中使用out-of-datagrid范围变量?

时间:2009-09-21 10:51:04

标签: flex actionscript-3 itemrenderer

我使用ItemRenderer将数组数组绑定到数据网格。我使用data变量来控制可绑定数据。我还需要将someComponentVariable插入到每一行,但它在组件范围内声明,因此数据网格似乎不会重新组合它(编译错误)。

如何在someComponentVariable

中使用此变量(ItemRenderer

代码示例

<mx:DataGrid id="userBonusesGrid" width="100" height="248" showHeaders="false" wordWrap="true">
    <mx:columns>
        <mx:DataGridColumn headerText="" width="36">
            <mx:itemRenderer>
                <mx:Component>
                    <mx:VBox verticalAlign="middle" horizontalAlign="center">
                        <ns1:SidePanelBonus 
                            bonusName="{data.name}" description="{data.description}" 
                            arrow="{someComponentVariable}">
                        </ns1:SidePanelBonus>   
                    </mx:VBox>
                </mx:Component>
            </mx:itemRenderer>
        </mx:DataGridColumn>
    </mx:columns>
</mx:DataGrid>

2 个答案:

答案 0 :(得分:4)

如果someComponentVariable是包含DataGrid的类的公共属性,则可以使用outerDocumentcomponent访问它。

<ns1:SidePanelBonus bonusName="{data.name}" description="{data.description}" 
    arrow="{outerDocument.someComponentVariable}">
</ns1:SidePanelBonus>   

有关outerDocument

的更多信息,请参阅Creating inline item renderers and editors中的“使用组件代码”部分

答案 1 :(得分:0)

不,你根本不能使用它。数据网格中的每个itemRenderer只能访问为其创建渲染器的项目。这是故意完成的,因为itemRendrers动态更改,它们不会永远绑定数据,滚动时,项目滚动而不是渲染器,它们保持在相同位置或者可能会更改,但滚动时相应的项目渲染器数据总是会更改。他们不会分享一对一的关系。

唯一的解决方案是以某种父子关系的形式传递项目中的数据。