Ho una vista ad albero nella mia forma di vincita che sta avendopiù di 10 nodi, i valori dei nodi vengono letti dal DB e cambia in modo dinamico, in base alla selezione per ciascun nodo devo mostrare i dettagli appropriati (i dati verranno letti dal DB per la griglia) nel DataGrid sul lato destro del modulo, c'è un modo più semplice per ottenere questo?
risposte:
2 per risposta № 1Puoi usare la proprietà TreeNode.Tag
. È già stato creato per contenere dati da TreeNode
. Durante il caricamento TreeNode
dal database, è possibile caricare i dati dell'elenco per ciascun nodo e inserirli in Tag
proprietà di TreeNode
seguendo il codice qui sotto.
TreeNode treeNode = new TreeNode(textNodeFromDb);
// for exam the LoadListDataByNodeText will return IList<Details>
treeNode.Tag = LoadListDataByNodeText(textNodeFromDb);
E quando l'utente seleziona un nodo su TreeView:
if (treeView.SelectedNode != null)
dataGrid.ItemSource = treeView.SelectedNode.Tag as IList<Details>
Per ottenere maggiori informazioni su TreeNode
si prega di seguire il link qui sotto. Contiene già anche il codice di esempio:
http://msdn.microsoft.com/en-us/library/system.windows.forms.treenode.tag.aspx
0 per risposta № 2
DataGrid.ItemsSource = getSelectedNodeDataList(myTreeView.SelectedNode.Text)
getSelectedNodeDataList
dovrebbe restituire a List
di dati per quel nodo. Se hai nomi duplicati attivi TreeView
uso Index
invece di Text
.