2012-12-28 51 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,即列表的变量。