Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   помогите Drag & Drop (http://www.flasher.ru/forum/showthread.php?t=102704)

Захаров 19.10.2007 16:59

помогите Drag & Drop
 
Как узнать что упало при драгндропе и если это чтото не подходит запретить перемещение этого в грид? желательн ос примерчиком!

Sneg 19.10.2007 20:25

Искать в хелпе по словам : dragEnter, dragExit, dragComplete,dragDrop - там вам и примеры будут.

Захаров 20.10.2007 20:18

искал более того нашел но там они используют в качестве источника данных Array а у меня XML
var items:Array = event.dragSource.dataForFormat("items") as Array;

что мне надо указать в dataForFormat что бы получить XML узел с атрибутами?

Захаров 20.10.2007 20:58

разобрался посмотрел что в dragSource.formats
получил массив того чего тащу(items[0]) привел к XML

Bruiser 04.12.2007 17:46

И все-таки, подскажите, в каком методе можно обрабатать и поменять иконку (крестик или плюсик) - dragEnter или dragOver?
И еще у меня получается так, что как бы я не обрабатывал, он все равно падает в DataGrid.

Bruiser 06.12.2007 12:50

Для тех, кто еще будет разбираться...

В приложение два 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, время: 16:02.

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