2012-12-28 79 views
0

我有一個樹,帶有dataprovider複選框作爲xmlList。現在我需要獲取列表項的項目渲染器,而不需要單擊項目並從外部搜索。通過flex列表項獲取itemrenderer

protected function btnSearch_clickHandler():void 
     { 
      var searchString:String = txtInputSearch.text; 
       if(searchString != "") 
       { 
        StyleItemsArray.removeAll(); 
        var conaintList:XMLList = (treeSource.node.(@label.search(searchString) > -1) as XMLList); 

        for each(var xmlItem:XML in conaintList) 
        { 
         // trigger the checkbox click event here 
        } 
       } 
     } 

對不起延遲: 我試圖給出的解決方案,但它似乎是DATAGROUP Flex 4中使用,但我仍然在柔性版本3。 我嘗試了其他方式(例如itemToItemRenderer()),但沒有運氣。 有人可以幫我嗎?

+0

請記住,每個列表項目可能沒有itemRenderer。您最好從按鈕處理程序觸發等效事件,然後使用數據綁定來更新列表中的itemRenderer。 –

+0

如果這是一個MX組件(我忘記了是否填寫了Spark的組件集),那麼您應該可以執行itemToItemRenderer。但是,您可能需要考慮改爲讓按鈕單擊在XML節點上觸發事件,然後您可以像沒有引用那樣執行操作(嚴格來說)您不應該嗤之以鼻。 –

回答

0

只需使用getElementAt即可檢索列表的所有項目渲染。

for(var i:int=0; i < youListVariable.dataProvider.length; i++) 
{ 
    var render:CustomFieldRenderer = youListVariable.dataGroup.getElementAt(i) as CustomFieldRenderer 
    //put Your comparison condition and if condition matched then break 
} 

CustomFieldRenderer是你itemRender。
youListVariable是您列表的ID,即列表的變量。