【问题标题】:Access a property of an item renderer in Flex在 Flex 中访问项目渲染器的属性
【发布时间】:2011-03-09 11:47:33
【问题描述】:

我有一个带有组合框的数据网格;

   <mx:DataGrid editable="true"  x="72" y="10" id="dataGrid" creationComplete="dataGrid_creationCompleteHandler(event)" dataProvider="{getAllResult.lastResult}" height="178" width="896">
        <mx:columns>
            <mx:DataGridColumn headerText="STATUS" dataField="tooltip"/>
            <mx:DataGridColumn headerText="CUSTOM" editable="false" width="250" labelFunction="meAdnan"  >
                <mx:itemRenderer>
                    <fx:Component className="myEditor2">
                        <mx:VBox height="100%" >
                            <mx:ComboBox  id="pickState" labelField="attname" 
                                          dataProvider="{parentApplication.getAllResult2.lastResult}" 
                                         >
                            </mx:ComboBox>

                        </mx:VBox>
                    </fx:Component>                 
                </mx:itemRenderer>
            </mx:DataGridColumn>
        </mx:columns>
   </mx:DataGrid>

现在,当我想从 itemrendered/combobox 访问一个函数时,我使用 parentApplication.funcName,但是如果以另一种方式访问​​,我如何从 itemrenderer 外部访问组合框的属性?我试过 myEditor2.pickState 但它现在可以工作了

【问题讨论】:

    标签: apache-flex adobe datagrid


    【解决方案1】:

    parentApplication 将引用主要的 Application 类,它可能并不总是您想要访问的内容 - 如果您的 DataGrid 位于扩展 Canvas 的组件中,该怎么办。使用outerDocumentitemRenderer 访问拥有的文档。所以应该是outerDocument.funcName

    直接访问 itemRenderer 实例并不是一个好主意,因为当您滚动列表等时会重用项目渲染器。因此,如果您获得对第一行的渲染器实例的引用并且向下滚动列表一点,则相同的实例(您认为是第一行)现在可能代表第三或第五(或其他)行,具体取决于您滚动了多少行。正确的方法是覆盖public set data 方法并根据数据从那里操作它。

    也就是说,您可以使用indexToItemRenderer 方法在给定索引处获取对当前项目渲染器的引用。将其转换为正确的类型(或将其分配给类型为 Object 的变量)并读取其 pickState 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      相关资源
      最近更新 更多