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

时间:2011-10-05 15:51:23

标签: flex

简介:我正在使用Oracle,BlazeDS,Java和Flex。我有一个在数据网格中显示的对象列表(让我们称之为 Main - 对象。这些对象中的每一个都有一组 UserComment - 与它们相关联的对象(One-to - 数据库中的许多关系。这些注释可能来自两个不同的“类型”用户,在 UserComment - 对象的“userType”字段中有1或0的干扰。每次用户选择数据网格中的 Main - 对象,与此对象相关的 UserComment的将显示在下面的单独数据网格中。

问题:根据介绍,我想将 UserComment的分成两个独立的数据网格(每个用户类型一个),而不是我现在拥有的数据网格。所以我的问题是:执行此任务的最佳方法是什么?根据“userType”字段的值将 UserComment的分成两个独立的数据网格的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

创建两个ArrayCollection对象并将它们绑定到DataGrids中的一个。为每个ArrayCollection指定filterFunction。例如:

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

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

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

答案 1 :(得分:1)

只需创建两个类型为ListCollectionView的集合视图,并为每个集合设置不同的filterFunction。然后,您可以将这些集合用作网格的dataProvider

// 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;

答案 2 :(得分:0)

每次用户选择数据网格中的主对象时,请查看UserComment集 并将它们安排在2个不同的ArrayCollections中: 一个用于userType 1 第二个是userType 0 然后使用这2个数组作为您要创建的两个独立数据网格的数据提供者