我的arraycollection中有多少个孩子在flex中有相同的节点?

时间:2012-03-30 06:24:20

标签: flex flex4 flex3

我有一个ArrayCollection,它有几个员工和部门。 每个员工属于一个部门。

如何从ArrayCollection中找出属于同一部门的员工人数。

在数据库中我们使用连接查询来执行此操作,但是如何通过在Flex中使用ArrayCollection来实现此目的?

例如

var employees:ArrayCollection = new ArrayCollection([
{Id:1, name="a", departmentid:1},
{Id:1, name="b", departmentid:1},
{Id:1, name="c", departmentid:1},
{Id:1, name="x", departmentid:2},
{Id:1, name="y", departmentid:2},
{Id:1, name="m", departmentid:3},
{Id:1, name="n", departmentid:3},
{Id:1, name="p", departmentid:3},
{Id:1, name="o", departmentid:3},
{Id:1, name="s", departmentid:4}]);

在上面的arraycollection中 3名员工属于第1部门 2名员工属于部门2 4名员工属于第3部门 1名员工属于第4部门

如何从flex中的arraycollection中获取这些值? 是否存在由adobe提供的内部功能或属性。

提前致谢

4 个答案:

答案 0 :(得分:0)

在Flex / AS3中,它与任何编程语言(java,php,c等)相同。 你必须循环进入数组的元素并检查department属性。

var myColl:ArrayCollection....

var count:int = 0;

for(i=0 ; i < myColl.length; i++)
{
   var emp:MyEmplModel = myColl[i] as MyEmplModel;

   if(emp.department == "someDepartment")
   {
      count++;
   }
}

trace("There are "+count+" emp. in someDepartment");

答案 1 :(得分:0)

如果chields再次是ArrayCollection,则以下内容可能有所帮助..

var o : ArrayCollection = new ArrayCollection();
( o.getItemAt( 0 ) as ArrayCollection ).length 

答案 2 :(得分:0)

就像Adrian指出的那样,您需要实施一种算法来解析您的收藏,并确定每个部门有多少员工。一些想法:

通常,数组集合用于存储同一类型的多个项目,因此将员工和部门放在同一集合中是没有意义的。由于任何公司的部门通常都是明确定义的,从某种意义上讲,它们不会经常更改,因此最好使用“枚举”或常量列表,每个部门名称或唯一代码。这可以通过创建一个静态类来实现,该静态类包含所有部门名称作为静态字符串。

下一步是解析您的初始集合,并确定为每个现有部门分配了多少员工。再次,阿德里安指出了实现这一目标的方法。

希望这会有所帮助。祝你有美好的一天。

答案 3 :(得分:0)

只需使用内置过滤功能来过滤您想要的内容 另外,您的对象设置不正确。

function myFilterFunc( obj:Object ):Boolean{
  if( obj['departmentid'] == deptId )
    return true;
  return false;
}


var deptId:int = 0;
var employees:ArrayCollection;  

employees = new ArrayCollection([
  {'Id':1,'name':"a", 'departmentid':1},
  {'Id':1,'name':"b", 'departmentid':1},
  {'Id':1,'name':"c", 'departmentid':1},
  {'Id':1,'name':"x", 'departmentid':2},
  {'Id':1,'name':"y", 'departmentid':2},
  {'Id':1,'name':"m", 'departmentid':3},
  {'Id':1,'name':"n", 'departmentid':3},
  {'Id':1,'name':"p", 'departmentid':3},
  {'Id':1,'name':"o", 'departmentid':3},
  {'Id':1,'name':"s", 'departmentid':4}]);


employees.filterFunction = myFilterFunc;
trace( employees.length ) // 10 // no filter applied
employees.refresh()
trace( employees.length ) // 0  // default of 0 is applied
deptId = 1
employees.refresh()
trace( employees.length ) // 3
deptId = 2
employees.refresh()
trace( employees.length ) // 2
deptId = 3
employees.refresh()
trace( employees.length ) // 4
deptId = 4
employees.refresh()
trace( employees.length ) // 1


employees.filterFunction = null;
employees.refresh()
trace( employees.length ) // 10