在Flash Builder中,如何创建<s:list> dataprovider =“数组的某个部分”?</s:list>

时间:2011-03-14 23:47:44

标签: xml flex actionscript

我有一个List,我有一个ArrayCollection。

ArrayCollection类似于:
   <mx:ArrayCollection id="arrColl">
      <mx:source>
         <mx:Array>
            <mx:Object label="Student A" score="85,36,43,67,54,47" />
           <mx:Object label="Student B" score="85,36,43,67,54,47" />
          <mx:Object label="Student C" score="85,36,43,67,54,47" />
        </mx:Array>
     </mx:source>
</mx:ArrayCollection>

我需要列表才能显示学生的分数。

类似的东西:

<s:List dataprovider="arrColl[Student A]"/>
或:
<s:List dataprovider="arrColl.Student A."/>

2 个答案:

答案 0 :(得分:1)

问题是列表控件不会拿起这个“34,65,36,87,12”变量并将其变成IList列表。

我想通了,我首先必须这样做:studentAArray = new ArrayCollection(arrColl.score.split(“,”));然后使用studentAArray作为List数据提供者。

答案 1 :(得分:0)

不要对列表做任何事情来实现这一点。您想要将过滤器应用于ArrayCollection。该列表将立即获取过滤器,并从视图中删除无效项目。

像这样设置dataProvider:

<s:List dataprovider="arrColl"/>

然后创建一个filterFunction,如下所示:

public function StudentAFilter(item:Object):void{
  if(item['label'] = "Student A"){
   return true;
  }
  return false;
}

在代码中的某处,执行以下操作:

arrColl.filterFunction = StudentAFilter;
arrColl.refresh()

上面的代码通常与按钮单击或下拉列表的更改处理程序有关;取决于您希望用户过滤数据的方式。