PDA

View Full Version : [VB.NET] TreeView con 2 valori differenti !!!


race2
24-11-2003, 16:40
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 ???

race2
25-11-2003, 18:00
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

race2
26-11-2003, 16:14
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 ???