Kelegan
Messages postés3Date d'inscriptionjeudi 30 décembre 2010StatutMembreDernière intervention18 février 2011
-
16 févr. 2011 à 16:29
Kelegan
Messages postés3Date d'inscriptionjeudi 30 décembre 2010StatutMembreDernière intervention18 février 2011
-
18 févr. 2011 à 09:33
Bonjour à tous !
Je suis actuellement sur un projet. Mon projet possède des treeviews où je peux faire du drag'n drop.
Pour créer mes treeviews, il n'y a aucun soucis. Les éléments des treeviews viennent directement d'une base de données MSSQL.
Pour avoir un id associé à chaque nom, j'ai utilisé des tableaux de structure comme ceci :
Public Structure Ressources
Dim Id As Integer
Dim Name As String
End Structure
Jusque là, aucun problème, pour chaque structure, j'ai bien mon id associé a mon name, et je peux les récupérer.
Mon problème vient du drag'n drop. J'utilise aussi les structures pour mes autres treeviews où je fais le drag'n drop.
Je voudrai garder la structure entière lors du drag'n drop, c'est à dire que le name, mais aussi l'id se déplace dans mon treeview principal.
Comment puis-je procéder ? Quelqu'un à déjà fait celà ?
D'autant qu'il faut que je garde l'id, sinon, ce n'est pas très "pro" si je fais mes requêtes sur le nom :)
rouliah
Messages postés10Date d'inscriptionjeudi 23 août 2007StatutMembreDernière intervention27 avril 2011 17 févr. 2011 à 13:11
Bonjour Kelegan,
Je ne sais pas si cela va résoudre ton problème mais tu peux mettre ton "Id" dans la propriété "Tag" du noeud. Cela pour ne pas avoir recours à une nouvelle structure, aussi à déplacer ton noeud, qui gardera à la fois sa "Name" et sa "Tag".
Kelegan
Messages postés3Date d'inscriptionjeudi 30 décembre 2010StatutMembreDernière intervention18 février 2011 17 févr. 2011 à 14:34
Bonjour rouliah !
Je pense que tu as bien compris mon problème ^^
J'ai testé ce que tu m'as dis, en mettant un tag dans le noeud. Le problème, est que lorsque j'ai un deuxième noeud, bim, ça plante en me disant que je ne peux pas ajouter un nouveau noeud et qu'il faut que je supprime l'ancien.
Public Sub treeviewload()
Dim Ressource As TreeNode
Dim Ressourceidem As String
Dim Operation As TreeNode
Dim Operationidem As String
Dim Etape As TreeNode
Dim Etapeidem As String
Ressource = New TreeNode
Operation = New TreeNode
Etape = New TreeNode
Dim J As Integer
Dim K As Integer
Dim I As Integer
Operationidem = ""
Ressourceidem = ""
Etapeidem = ""
Try
'affiche les liens déjà existants dans le treeview de gauche
Module1.connection(connexion)
Dim strRequete As String = "Exec RPT_Resources_Operations_Steps"
Dim oCommand As New SqlCommand(strRequete, connexion)
Dim MyExecut As SqlDataReader
MyExecut = oCommand.ExecuteReader()
I = -1
J = -1
K = -1
While (MyExecut.Read())
If Ressourceidem <> MyExecut(2).ToString() Then
I = I + 1
LaResource(I).Id = MyExecut(0)
LaResource(I).Name = MyExecut(2)
Ressource.Tag = MyExecut(0)
Ressource.Text = MyExecut(2)
TreeView.Nodes.Add(Ressource)
TreeView.ForeColor = Color.Black
'permet de gérer le fait d'avoir qu'une seule opération sur la ressource
Operationidem = ""
'//
Ressourceidem = MyExecut(2).ToString()
End If
If Operationidem <> MyExecut(3).ToString() Then
J = J + 1
Loperation(J).Id = MyExecut(5)
Loperation(J).Name = MyExecut(3)
Operation.Tag = MyExecut(5)
Operation.Text = MyExecut(3)
Ressource.Nodes.Add(Operation)
Operation.ForeColor = Color.Green
Operationidem = MyExecut(3).ToString()
''permet de gérer le fait d'avoir qu'une seule étape sur l'opération (facultatif)
Etapeidem = ""
End If
If Etapeidem <> MyExecut(4).ToString() Then
K = K + 1
Letape(K).Id = MyExecut(6)
Letape(K).Name = MyExecut(4)
Etape.Tag = MyExecut(6)
Etape.Text = MyExecut(4)
Operation.Nodes.Add(Etape)
Etape.ForeColor = Color.Blue
Etapeidem = MyExecut(4).ToString()
End If
End While
connexion.Close()
Catch ex As Exception
MsgBox("Echec du chargement " & ex.Message)
connexion.Close()
End Try
End Sub