Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 19.04.2010, 13:55
chaos вне форума Посмотреть профиль Отправить личное сообщение для chaos Найти все сообщения от chaos
  № 1  
Ответить с цитированием
chaos

Регистрация: Feb 2010
Сообщений: 20
По умолчанию Порядок следования элементов в ADG

Доброго времени суток.
Имеется иерархическая структура(2х уровневая).
у парентов(1ый уровень) у ValueObject'ов есть поле order отвечающее за порядок отображения этих парентов(те перед установкой дата-провайдера колекция сортируется по этому полю).
Дальше необходимо в процессе работы менять порядок групп(перетаскивание или еще как).
столкнулся с проблемой. Есть следующий код
Код AS3:
//запоминаем индекс выделенного элемента
const selectedIndex:int = dataGrid.selectedIndex;
 
var cursor:IViewCursor = HierarchicalCollectionView(dataGrid.dataProvider).createCursor();
//бежим курсором до следующей первой группы(2)
cursor.seek(CursorBookmark.FIRST, selectedIndex + 1);
while (! (cursor.current.valueOf() is ClientProfileGroup))
	Assert.isTrue(cursor.moveNext());
 
//удаляем ее(2) и запоминаем
var item:Object = cursor.remove();
 
//откатываемся на сохранненый индекс
cursor.seek(CursorBookmark.FIRST, selectedIndex);
//а группа ли это
Assert.isTrue(cursor.current.valueOf() is ClientProfileGroup);
 
//меняем order у групп
const order:uint = cursor.current.order;
cursor.current.order = item.order;
item.order = order;
 
//вставляем сохраненную группу(2)
cursor.insert(item);
данный код делает опускание группы.

те имея
1
+----childrens
2
+----childrens
3
+----childrens
4
+----childrens

опускаем группу например №3, получаем
1
+----childrens
2
+----childrens
4
+----childrens
3
+----childrens

код работает если все группы свернуты, если группа которая находится выше опускаемой развернута(те видны чилды) то код начинает работать странно - меняется порядок у групп которые находятся ниже опускаемой, причем у всех - каруселька получается.


Подскажите как решить проблему 3ий день не могу добиться нормального результата

Добавлено через 27 часов 44 минуты
не знаю на сколько правильно такое, решил проблему изменениями в модели
Код AS3:
//берем выделенную группу
var selectedItem:TreeItem = dataGrid.selectedItem as TreeItem;
 
//а группа ли это
Assert.notNull(selectedItem.valueOf() as ClientProfileGroup);
 
//Определяем индекс группы в массиве						
const selItemIdx:int = model.data.getItemIndex(selectedItem);
 
//должен быть найден
Assert.isTrue(selItemIdx != -1);
 
//индекс группыд ля замены
const idx:int = selItemIdx + 1;
 
//метод не должен выполняться для последней группы
Assert.isTrue(idx < model.data.length);
 
//берем группу для замены
var item:TreeItem = model.data.getItemAt(idx) as TreeItem;
 
//группа ли это?
Assert.notNull(item);
 
//меняем группы местами в массиве
model.data.addItemAt(model.data.removeItemAt(selItemIdx), idx);
 
//меняем order у групп
const order:uint = selectedItem.order;
selectedItem.order = item.order;
item.order = order;
 
//отмечаем поднимаемую группу на сохранение
if (false == editedItems.contains(item))
	editedItems.addItem(item);				
 
dataGrid.selectedItem = selectedItem;
ЗЫ комменты пишу до того как пишу код, если кому интересно вдруг стало - не лень ли мне....

Создать новую тему   Часовой пояс GMT +4, время: 21:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:13.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.