![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2007
Сообщений: 66
|
Как узнать что упало при драгндропе и если это чтото не подходит запретить перемещение этого в грид? желательн ос примерчиком!
|
|
|||||
|
Искать в хелпе по словам : dragEnter, dragExit, dragComplete,dragDrop - там вам и примеры будут.
|
|
|||||
|
Регистрация: Oct 2007
Сообщений: 66
|
искал более того нашел но там они используют в качестве источника данных Array а у меня XML
var items:Array = event.dragSource.dataForFormat("items") as Array; что мне надо указать в dataForFormat что бы получить XML узел с атрибутами? |
|
|||||
|
Регистрация: Oct 2007
Сообщений: 66
|
разобрался посмотрел что в dragSource.formats
получил массив того чего тащу(items[0]) привел к XML |
|
|||||
|
Регистрация: Sep 2007
Сообщений: 146
|
И все-таки, подскажите, в каком методе можно обрабатать и поменять иконку (крестик или плюсик) - dragEnter или dragOver?
И еще у меня получается так, что как бы я не обрабатывал, он все равно падает в DataGrid. Последний раз редактировалось Bruiser; 04.12.2007 в 17:59. |
|
|||||
|
Регистрация: Sep 2007
Сообщений: 146
|
Для тех, кто еще будет разбираться...
В приложение два DataGrid <mx:DataGrid id="dg_from" dragEnabled="true" /> <mx:DataGrid id="dg_to" dragOver="doDragOver(event)" dragDrop="doDragDrop(event)" dragEnter="doDragEnter(event)" /> //Задаем, что будем сами переопределять
private function doDragEnter(event:DragEvent):void {
var dragInitiator:DataGrid=DataGrid(event.currentTarget);
DragManager.acceptDragDrop(dragInitiator);
}
//В объекте items те элементы, которые мы перетаскиваем
private function doDragOver(event:DragEvent):void{
var items:Array = event.dragSource.dataForFormat("items") as Array;
var arr:ArrayCollection = dg_to.dataProvider as ArrayCollection;
var flag:Boolean;
//Можно добавить функцию для проверки уникальности и если такой элемент уже есть, то не разрешать перекидывать (будет знак крестик)
flag = checkUniq(items);
if (!flag){
//запрет переноса
DragManager.showFeedback(DragManager.NONE);
}else{
//копирование элемента (знак - зеленый плюс)
DragManager.showFeedback(DragManager.COPY);
}
}
//Эта функция вызывается, если копирование разрешено (COPY, MOVE...)
private function doDragDrop(event:DragEvent):void {
var dropTarget:DataGrid=DataGrid(event.currentTarget);
doDragExit(event);
var items:Array = event.dragSource.dataForFormat("items") as Array;
var dropLoc:int = dropTarget.calculateDropIndex(event);
if (dropTarget.dataProvider==null){
dropTarget.dataProvider = new ArrayCollection();
}
for(var i:uint=0; i < items.length; i++){
(dropTarget.dataProvider).addItemAt(items[i],dropLoc);
}
}
private function doDragExit(event:DragEvent):void {
var dropTarget:DataGrid=DataGrid(event.currentTarget);
dropTarget.hideDropFeedback(event);
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|