簡體   English   中英

在Flex中訪問項目渲染器的屬性

[英]Access a property of an item renderer in Flex

我有一個數據網格,里面有一個組合框。

   <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外部訪問combobox的屬性呢? 我嘗試了myEditor2.pickState但是現在可以正常工作了

parentApplication將引用主Application類,而該類可能並不總是您要訪問的主類-如果您的DataGrid位於擴展Canvas的組件中,該怎么辦。 使用outerDocumentitemRenderer訪問擁有的文檔。 因此它應該是outerDocument.funcName

直接訪問itemRenderer實例不是一個好主意,因為在滾動列表等時將重用項目渲染器。因此,如果獲得對第一行的渲染器實例的引用,然后向下滾動列表,則該實例(相信是第一行)現在可以代表第三行或第五行(或其他任何行),具體取決於您滾動了多少行。 正確的方法是重寫public set data方法,並根據數據從那里進行操作。

也就是說,您可以使用indexToItemRenderer方法獲取給定索引處對當前項目渲染器的引用。 將其強制轉換為正確的類型(或將其分配給類型為Object的變量)並讀取其pickState屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM