Comment faites glisser et déposez ligne au sein de la même datagridview
Dans une Application Windows (Visual Studio)(VB) comment avez-vous glisser et de déposer une seule ligne à une autre position pour permettre à l'utilisateur de re-commande de la ligne? Je n'ai pas trouvé de dignes exemples encore.
OriginalL'auteur Troy Mitchel | 2012-07-19
Vous devez vous connecter pour publier un commentaire.
Ici est une version de visual basic à partir de ce C# réponse: Comment pourrais-je faire Glisser et Déposer des DataGridView Lignes sous les uns des autres?
La forme de variables de classe:
Les événements de glisser:
Les événements de souris:
Assurez-vous d'avoir les grilles
AllowDrop
propriété est définie sur true.Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.
Comme le message d'erreur indique, votre grille est lié aux données (vous avez une source de données), ce qui signifie que vous ne pouvez pas manipuler la grille directement. Dans votre cas, vous avez besoin pour manipuler la source de données à la place. Si vous avez des problèmes, poser une nouvelle question, et de les documenter de façon appropriée.
comment puis-je manipuler la source de données à la place? c'est mon code pour remplir le datagridview:
con = New SqlConnection con.ConnectionString = "Data Source=mssql;Initial Catalog=DATABASE;User ID=sa;Password=" con.Open() adap = New SqlDataAdapter("SELECT * FROM tablename", con) ds = New System.Data.DataSet() adap.Fill(ds, "TableNew") Datagridview1.DataSource = ds.Tables(0) con.Close()
Votre tableau de données:
ds.Tables(0)
. Si vous ajoutez une ligne pour que les données de la table, votre grille affiche automatiquement.OriginalL'auteur LarsTech
Mise à JOUR:
Au lieu de
changement de
alors une erreur se produit lorsque vous faites glisser une ligne de la "zone blanche", si vous ne me croyez pas, vous devez l'essayer.
le code final (Uniquement pour la partie "Les événements de glisser") est-ce:
OriginalL'auteur Adrian LG
Voici un Contrôle sans le bug mentionné.
Ensemble
AllowUserToOrderRows
etAllowDrop
àTrue
dans le Concepteur Windows Forms et faites glisser les en-têtes de ligne, pas le contenu.J'ai trouvé aussi que si je prolonge certains WinForms des contrôles, puis le nouveau code doit être compilé en 32 bits pour pouvoir travailler (et, par conséquent, ne peut être vu dans la boîte à outils, une fois compilé en 32 bits). Voir stackoverflow.com/a/26539992/1624894 pour plus de détails.
OriginalL'auteur John
Merci pour tout, du code de travail. J'ai été faire une seule erreur. Je l'ai résolu.
si le datagridview "Activer la Modification" est réglé, vous recevez une erreur lorsque vous jetez l'espacement des lignes. Vous pouvez essayer. Je l'ai résolu comme suit:
Merci pour toutes autres informations
OriginalL'auteur Yucel Solmaz
1.5 améliorations pour l'événement GridView.DragDrop:
La première amélioration de 50%, Pour éviter le descritte erreur, vous pouvez également utiliser
Deuxième est de définir le focus sur la ligne actuelle et la première cellule:
OriginalL'auteur Tzwenni