Apache flex Flex:根据特定值将对象分成两个数据网格

Apache flex Flex:根据特定值将对象分成两个数据网格,apache-flex,Apache Flex,简介:我使用Oracle、BlazeDS、Java和Flex。我有一个在datagrid中显示的对象列表(让我们称之为主对象。每个对象都有一组与其关联的UserComment对象(数据库中的一对多关系)。这些注释可能来自两种不同的“类型”用户,在UserComment对象的“userType”中用1或0来区分每次用户在datagrid中选择一个主对象时,与该对象相关的UserComment将显示在下面一个单独的datagrid中 问题:根据介绍,我想将UserComment分为两个单独的数据网格

简介:我使用Oracle、BlazeDS、Java和Flex。我有一个在datagrid中显示的对象列表(让我们称之为主对象。每个对象都有一组与其关联的UserComment对象(数据库中的一对多关系)。这些注释可能来自两种不同的“类型”用户,在UserComment对象的“userType”中用1或0来区分每次用户在datagrid中选择一个主对象时,与该对象相关的UserComment将显示在下面一个单独的datagrid中


问题:根据介绍,我想将UserComment分为两个单独的数据网格(每个用户类型一个)因此,我的问题是:执行此任务的最佳方法是什么?根据“userType”字段的值将UserComment分为两个单独的数据网格的最佳方法是什么?

每次用户选择数据网格中的主对象时,都要检查UserComment集 并将它们排列在两个不同的阵列集合中: 一个用于用户类型1 第二个是用户类型0
然后将这两个数组用作要创建的两个独立数据网格的数据提供程序创建两个ArrayCollection对象并将其绑定到其中一个数据网格。为每个ArrayCollection指定filterFunction。例如:

userTypeA(item:Object):Boolean
{
  return UserComment(item).userType == 1;
}

userTypeB(item:Object):Boolean
{
  return UserComment(item).userType == 0;
}

然后,每当进行新选择时,从ArracyCollections中删除所有以前的项,并从当前选择中添加所有UserComments。过滤器将确保每个DataGrid仅显示两种类型中的一种。

只需创建两个类型为
ListCollectionView
的集合视图,并设置不同的
过滤器功能用于每个集合。然后您可以将这些集合用作网格的数据提供程序

// those are the comments from the selected "main object"
var comments:ArrayCollection;

var typeZeroComments:ListCollectionView = new ListCollectionView(comments);
typeZeroComments.filterFunction = function(comment:UserComment):Boolean {
    return comment.userType == 0;
};
typeZeroComments.refresh();

var typeOneComments:ListCollectionView = new ListCollectionView(comments);
typeOneComments.filterFunction = function(comment:UserComment):Boolean {
    return comment.userType == 1;
};
typeOneComments.refresh();
当选择不同的“主对象”时,只需将这些对象的注释分配给两个已过滤的集合:

typeZeroComments.list = comments;
typeOneComments.list = comments;

谢谢你的回答,我实施了你的方法,效果很好:)谢谢大家花时间帮助我!:)