2009-12-03 5 views
0

Je crée une application qui permettra aux utilisateurs de modéliser les informations de configuration en leur permettant de glisser et déposer des objets d'un arbre Flex dans un DataGrid.Flex Drag and Drop

Je sais que l'arbre et le DataGrid supportent tous deux assez bien le glisser-déposer.

Mon problème est que je veux que les utilisateurs déposent des éléments de l'arbre dans une cellule Datagrid particulière. Je pense que les événements drop standard dans le Datagrid essayent de remplir toute la ligne de données par défaut. Ce n'est pas ce que je veux, je veux déposer des composants dans une seule cellule.

Je pensais que chaque fois qu'un objet est tombé sur la grille de données que vous auriez à: - Obtenir l'emplacement de la cellule (x, y) l'objet a été déposé dans - Obtenez tous les objets cellulaires existants et reconstruire ce DataGrid rayer de zéro (dynamiquement) en ajoutant le nouvel objet déposé à la ligne dans sa position correcte. Donnant ainsi l'illusion que vous pouvez tomber dans une cellule - c'est un peu un fudge mais je pense que cela pourrait fonctionner :)

Tout commentaire serait génial. Merci d'avance Mike

Répondre

1

Tournez glisser et déposez pour le DataGrid.

Écrire un rendu personnalisé qui s'auto-écoute pour les événements DragEnter/DragDrop. Dans le gestionnaire de l'événement drop, ajoutez le (s) élément (s) aux données (à la variable référencée par cette colonne).

Si votre moteur de rendu est lié à l'élément, il sera mis à jour.

(Notez que ce n'est pas la meilleure pratique, vous souhaitez envoyer un événement contenant l'élément de données du rendu, la variable qu'il représentait et les éléments supprimés, puis manipuler le fournisseur de données en dehors du moteur de rendu))