0

(Vol. Infragistics 2008 3, 2,0 CLR)Imiter la traînée UltraGridColumnChooser & drop capacité

UltraGrid pour Infragistics est fourni avec une commande de sélecteur de colonne de l'utilisateur, qui est simplement une disposition verticale des colonnes avec des cases à cocher qui font alterner état caché d'une colonne . De plus, il vous permet de sélectionner une colonne et de la faire glisser directement sur la grille pour ne pas avoir à la positionner manuellement par la suite. (Ceci est particulièrement pratique quand vous avez déjà beaucoup de colonnes visibles et n'avez aucune idée où le nouveau s'est terminé.)

Je construis mon propre sélecteur de colonne basé sur un UltraTree. Obtenir que les cases à cocher se comportent de la même manière n'était pas un problème, mais je n'ai pas trouvé un moyen de faire glisser une colonne de l'arbre vers la grille et de l'accepter.

Dans mon arbre, chaque UltraTreeNode a une Tag avec les éléments suivants struct:

Private Structure DraggableGridColumn 
    Public NodeKey As String 
    Public NodeName As String 
    Public ParentKey As String 

    Public Column As UltraGridColumn 
End Structure 

J'ai alors un événement comme suit:

Private Sub columnsTree_SelectionDragStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles columnsTree.SelectionDragStart 
    If columnsTree.SelectedNodes.Count <> 1 Then 
     Return 
    End If 

    If Not TypeOf columnsTree.SelectedNodes(0).Tag Is DraggableGridColumn Then 
     Return 
    End If 

    Dim column As UltraGridColumn = CType(columnsTree.SelectedNodes(0).Tag, DraggableGridColumn).Column 

    columnsTree.DoDragDrop(column, DragDropEffects.All) 
End Sub 

Dans l'appel DoDragDrop, ni column (de type UltraGridColumn) ni column.Header (de type ColumnHeader) sont acceptés par la grille. Je suppose que j'envoie le mauvais type, et/ou que la grille attend un struct spécial avec quelques informations supplémentaires. Malheureusement, j'ai également échoué à attraper un événement (à la fois du côté du sélecteur de colonnes et du côté de la grille) où le sélecteur de colonnes normal d'Infragistics le fait correctement; la traînée normale & les événements de dépôt ne semblent jamais se déclencher.

Répondre

0

Il semble que la colonne doive être un UltraTreeNode pour que cela fonctionne. Vraisemblablement, vous placez les données de la colonne dans un UltraTreeNode (dérivé) de quelque sorte, vous pouvez donc essayer de le décanter et d'utiliser cet objet dans l'appel DoDragDrop.

- MarkusQ

+0

Merci pour votre réponse - malheureusement, un représentant Infragistics a depuis clarifié j'aurais fait à nouveau mettre en œuvre ce comportement (à savoir la réutilisation de la portion de goutte de UltraWinGrid du Drag & Drop Code ISN régulier pas possible). –