简介:我正在使用Oracle,BlazeDS,Java和Flex。我有一个在数据网格中显示的对象列表(让我们称之为 Main - 对象。这些对象中的每一个都有一组 UserComment - 与它们相关联的对象(One-to - 数据库中的许多关系。这些注释可能来自两个不同的“类型”用户,在 UserComment - 对象的“userType”字段中有1或0的干扰。每次用户选择数据网格中的 Main - 对象,与此对象相关的 UserComment的将显示在下面的单独数据网格中。
问题:根据介绍,我想将 UserComment的分成两个独立的数据网格(每个用户类型一个),而不是我现在拥有的数据网格。所以我的问题是:执行此任务的最佳方法是什么?根据“userType”字段的值将 UserComment的分成两个独立的数据网格的最佳方法是什么?
答案 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个数组作为您要创建的两个独立数据网格的数据提供者