2017-01-13 2 views
0

Je souhaite limiter le glisser-déposer d'un élément particulier dans une grille de données. Tous les éléments ne seront pas ajoutés dans la grille de données. Par exemple, lorsque je clique et que je fais glisser un élément X vers la grille de données, il est ajouté. Et si je clique et fais glisser un autre élément, Y, vers le même DataGrid, il ne sera pas ajouté.Restreindre le glisser-déposer de certains éléments dans une grille de données? - Adobe Flex

<s:Label text="Source"/> 
<mx:DataGrid id="srcgrid" 
    allowMultipleSelection="true" 
    dragEnabled="true" 
    dropEnabled="true" 
    dragDrop="dragDropHandlerSrc(event);" 
      dragMoveEnabled="true"> 
      <mx:columns> 
       <mx:DataGridColumn dataField="Expense"/> 
       <mx:DataGridColumn dataField="Value"/> 
      </mx:columns>  
     </mx:DataGrid> 

<s:Label text="Costs"/> 
<mx:DataGrid id="costgrid" 
    allowMultipleSelection="true" 
    dragEnabled="true" 
    dropEnabled="true" 
    dragMoveEnabled="true" 
    dragDrop="dragDropHandlerCost(event);"> 
    <mx:columns> 
     <mx:DataGridColumn dataField="Espense"/> 
     <mx:DataGridColumn dataField="Value"/> 
    </mx:columns>  
</mx:DataGrid> 

<fx:Script> 
    private function initApp():void { 
     srcgrid.dataProvider = new ArrayCollection([ 
     {Expense:'Electricity', Value:100}, 
     {Expense:'Phone', Value:200}, 
     {Expense:'Water', Value:300}, 
     {Expense:'Contract A', Value:500}, 
     {Expense:'Contract B', Value:600} 
     ]); 

     costgrid.dataProvider = new ArrayCollection([]); 
    } 
</fx:Script> 

Dans cet exemple, les éléments de l'électricité, le téléphone et l'eau de srcgrid seront ajoutés dans DataGrid costgrid. Et l'article Contrat A ne sera pas ajouté dans costgrid.

Une idée?

Merci d'avance!

Répondre

1

Vous pouvez faire quelque chose comme ça

private function dragDropHandlerCost(event:DragEvent):void { 

     var dragObj:Vector.<Object> = 
       event.dragSource.dataForFormat("itemsByIndex") as Vector.<Object>; 
     if (dragObj[0].Expense == "Contract A"){ 
      event.preventDefault(); 
      DragManager.showFeedback(DragManager.NONE); 
     } 

    } 
+0

Merci pour la réponse! Le code fonctionne parfaitement !!! Merci beaucoup!!! – Marcel