View Full Version : [VB.NET] TreeView con 2 valori differenti !!!
Salve!
Vorrei assegnare ad un "TreeView" 2 valori differenti estratti da una
tabella di un Database, tipo:
"ID_Articolo" e "Articolo"
in modio da visualizzare nei nodi il campo "Articolo", ma poi cliccando nel
nodo estrarre il valore del campo "ID_Articolo", in modo da poterci fare
delle QUERY con quell' ID_Articolo.
Private Sub TreeView1_DoubleClick(ByVal sender As Object, ByVal e As
System.EventArgs) Handles TreeView1.DoubleClick
MsgBox(TreeView1.SelectedNode.Text)
End Sub
E' possibile assegnare 2 valori differenti ad un nodo ??? e poi estrarli ???
se si come ???
Come posso aggiustare questo codice ???
Mi hanno dato una mano fino a qui'
, mica ci si puo' fare qualcosa qui ???
Private oConn As New SqlConnection("Data Source=127.0.0.1,1433; Network Library=DBMSSOCN; Initial Catalog=Web_Monster; User ID=sa; Password=;")
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myNode As New MyNode()
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
oConn.Open()
Dim oComm As New SqlCommand("SELECT ID_Pratica FROM Pratiche ORDER BY ID_Pratica ASC", oConn)
Dim oRead As SqlDataReader = oComm.ExecuteReader
While oRead.Read()
myNode.myProp1 = oRead("ID_Pratica")
TreeView1.Nodes.Add("Pratica N. " & myNode.myProp1)
End While
oConn.Close()
TreeView1.EndUpdate()
End Sub
Public Class MyNode : Inherits TreeNode
Public myProp1, MyProp2, MyProp3 As String
End Class
Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
Dim Node As MyNode = DirectCast(TreeView1.SelectedNode, MyNode)
Dim s As String = Node.myProp1
MsgBox(s)
End Sub
Eccolo finalmente funziona tutto !!!!!!!
Solamente che non riesco a estrarre i valori contenuti nelle proprieta' delle classi in base al Nodo cliccato.
Private sConn As String = "Data Source=127.0.0.1,1433; Network Library=DBMSSOCN; Initial Catalog=Web_Monster; User ID=sa; Password=;"
Private oConn As New SqlConnection(sConn)
Private oConn1 As New SqlConnection(sConn)
Private oConn2 As New SqlConnection(sConn)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim n1 As TreeNode
Dim n2 As TreeNode
Dim n3 As TreeNode
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
'-- estrazione Pratiche inizio
oConn.Open()
Dim oComm As New SqlCommand("SELECT ID_Pratica FROM Pratiche ORDER BY ID_Pratica ASC", oConn)
Dim oRead As SqlDataReader = oComm.ExecuteReader
While oRead.Read()
Dim myNodePratiche As New NodoPratiche
myNodePratiche.Label = "Pratica"
myNodePratiche.ID_Pratiche = oRead("ID_Pratica")
n1 = TreeView1.Nodes.Add(myNodePratiche.Label & "_" & myNodePratiche.ID_Pratiche)
'-- estrazione Url inizio
oConn1.Open()
Dim oComm1 As New SqlCommand("SELECT ID_Url,Url FROM Url WHERE ID_Pratica=" & oRead("ID_Pratica") & "", oConn1)
Dim oRead1 As SqlDataReader = oComm1.ExecuteReader
While oRead1.Read()
Dim nodeUrl As New NodoUrl
nodeUrl.ID_Url = oRead1("ID_Url")
nodeUrl.Url = oRead1("Url")
n2 = n1.Nodes.Add(nodeUrl.Url)
'-- estrazione Email inizio
oConn2.Open()
Dim oComm2 As New SqlCommand("SELECT ID_Email,Email FROM Email WHERE ID_Pratica=" & oRead("ID_Pratica") & " AND ID_Url=" & oRead1("ID_Url") & "", oConn2)
Dim oRead2 As SqlDataReader = oComm2.ExecuteReader
While oRead2.Read()
Dim nodeEmail As New NodoEmail
nodeEmail.ID_Email = oRead2("ID_Email")
nodeEmail.Email = oRead2("Email")
n3 = n2.Nodes.Add(nodeEmail.Email)
End While
oConn2.Close()
End While
oConn1.Close()
End While
oConn.Close()
TreeView1.EndUpdate()
End Sub
Public Class NodoPratiche
Public ID_Pratiche, Label As String
End Class
Public Class NodoUrl
Public ID_Url, Url As String
End Class
Public Class NodoEmail
Public ID_Email, Email As String
End Class
Private Sub TreeView1_BeforeExpand(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView1.BeforeExpand
MsgBox("qui' vorrei visualizzare il valore di una proprieta' della classe in base al nodo cliccato")
End Sub
il mio problema e' estrarre dalla classe un dato es:
da "Public Class NodoPratiche " vorrei estrarre il contenuto di "ID_Pratiche"
che contiene l'ID:Pratica del Nodo cliccato,
come posso fare ad estrarlo ???
io faccio questo:
Dim x As NodoPratiche
Dim y As Integer = x.ID_Pratiche
MsgBox(y)
e mi da :
Riferimento a un oggetto non impostato su un'istanza di oggetto.
perche nonmi stampa l'ID_Pratiche selezionato con il click nel Nodo ???
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.