![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2010
Сообщений: 20
|
Доброго времени суток.
Имеется иерархическая структура(2х уровневая). у парентов(1ый уровень) у ValueObject'ов есть поле order отвечающее за порядок отображения этих парентов(те перед установкой дата-провайдера колекция сортируется по этому полю). Дальше необходимо в процессе работы менять порядок групп(перетаскивание или еще как). столкнулся с проблемой. Есть следующий код //запоминаем индекс выделенного элемента 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 минуты не знаю на сколько правильно такое, решил проблему изменениями в модели //берем выделенную группу 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. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|