Flex: разделение объектов на две сетки данных на основе определенного значения - PullRequest
1 голос
/ 05 октября 2011

Введение: Я использую Oracle, BlazeDS, Java и Flex.У меня есть список объектов, отображаемых в сетке данных (давайте назовем их Main -объектами. Каждый из этих объектов имеет набор UserComment -объектов, связанных с ними (один-ко-многим)отношения в БД). Эти комментарии могут исходить от двух разных «типов» пользователей, которые могут отличаться 1 или 0 в поле «userType» объекта UserComment . Каждый раз, когда пользователь выбирает Main -объект в таблице данных, UserComment , связанный с этим объектом, отображается в отдельной таблице данных ниже.

Вопрос: Основано на введении,Я хочу разделить UserComment на две отдельные таблицы данных (по одной для каждого типа пользователя) вместо той, что у меня есть сейчас. Поэтому мой вопрос: каков наилучший подход для выполнения этой задачи?лучший способ разделения UserComment на две отдельные сетки данных на основе значения поля «userType»?

Ответы [ 3 ]

2 голосов
/ 05 октября 2011

Создайте два объекта ArrayCollection и свяжите их, каждый с одной из DataGrids.Укажите функцию filterFunction для каждой коллекции ArrayCollection.Например:

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

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

Затем при каждом новом выделении удаляйте все предыдущие элементы из ArracyCollections и добавляйте все пользовательские комментарии из текущего выделения.Фильтры гарантируют, что каждая DataGrid отображает только один из двух типов.

1 голос
/ 05 октября 2011

Просто создайте два вида коллекций типа 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;
0 голосов
/ 05 октября 2011

каждый раз, когда пользователь выбирает Main-объект в сетке данных, переходите через набор UserComment и расположить их в 2 разных ArrayCollections: один для userType 1 и второй для userType 0 затем используйте эти 2 массива в качестве поставщиков данных для двух отдельных массивов данных, которые вы хотите создать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...