|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
strange mood
|
Перетаскивание элементов внутри Tree - как выяснить, что куда перетащили?
Компонент Tree позволяет перетаскивать элементы между папками, при этом элементы перемещаются туда, куда их перетащили. Как узнать, какой элемент куда перетащили? Это нужно для того, чтобы отправить на сервер запрос о перемещении элемента из одной категории в другую.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
Modus ponens
|
Не пробуя, на угад:
подписаться на dragComplete / paste, у евента dragSource будет по идее перетаскиваемым объектом... И потом через getParentItem() отыскать куда он упал. Вопрос в том, что именно вы подразумеваете под "куда перетащили", вполне возможно, что будет менее затратно просто сравнить XML (если провайдер XML) до и после.
__________________
Hell is the possibility of sanity |
|
|||||
strange mood
|
После долгого вдумчивого чтения кода Tree пришёл к вот такому решению:
this.structureTree.calculateDropIndex(e); var dd :Object = this.structureTree.mx_internal::_dropData; if(dd.parent)trace(dd.parent.@title); else trace('root'); Добавлено через 1 час 14 минут И только потом наткнулся на метод getParentItem. Пойду-ка я спать лучше.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
Регистрация: Sep 2009
Сообщений: 5
|
Господа, боюсь, что я присоединяюсь к вопросу, и никак не могу удовлетвориться ответом. Если можно, чуть-чуть подробнее.
Конкретно, задача очень простая. Есть dataprovider (XMLList): <mx:XMLList id="treeData"> <node szName="Mail Box" szIndex="1"> <node szName="Inbox" szIndex="2"> <node szName="Marketing" szIndex="3"/> <node szName="Product Management" szIndex="4"/> <node szName="Personal" szIndex="5"/> </node> <node szName="Outbox" szIndex="6"> <node szName="Professional" szIndex="7"/> <node szName="Personal" szIndex="8"/> </node> <node szName="Spam" szIndex="9"/> <node szName="Sent" szIndex="10"/> </node> </mx:XMLList> <mx:Tree id="theTreeCtrl" labelField="@szName" showRoot="false" dataProvider="{treeData}" dragEnabled="true" dropEnabled="true" dragDrop="handlerDragDrop(event)"/> Инициированный Drag and Drop великолепно работает. Но при окончательной обработке требуется провести ряд действий с атрибутами szIndex из соответсвующих элементов дерева. Я легко достаю этот атрибут из элемента КОТОРЫЙ перетаскивается. Выглядит это примерно так: protected function handlerDragDrop(theEvent:DragEvent):void{ var myData:Array = theEvent.dragSource.dataForFormat("treeItems") as Array; var szIndexSource:String = myData[0].@szIndex; return; } А чего с ним делать дальше? Как добраться до DataProvider-а, а точнее до нужного элемента в нем? Заранее, спасибо. Добавлено через 15 часов 44 минуты Если кому еще интересна эта тема, я все таки разобрался. Полученный через calculateDropIndex индекс следует присвоить в selectedIndex и тогда из selectedItem можно будет извлекать необходимые значения. Побочный эффект данного решения в том, что смещается выделение в дереве и не совсем понятно поведение при множественном выделении. Однако как базовое решение - вполне пригодно. Итого: для работы с данными элемента на который брошен перетаскиваемый элемент следует писать: |
Часовой пояс GMT +4, время: 20:45. |
|
« Предыдущая тема | Следующая тема » |
|
|