18 messaggi dal 20 ottobre 2010
Salve io ho

IList<Alimento> alimento = new List<Alimento>();
alimento .id = (Int32)re.GetInt32(0);
alimento .Nome =(String)re.GetString(1);
alimento .Gruppo = (String)re.GetString(2);

e la TreeView

<TreeView Margin="10,10,0,13" Name="trv_alimenti" HorizontalAlignment="Left" VerticalAlignment="Top" Width="194" Height="200" />

questo è il nodo principale
alimento .Gruppo
e questi i figigli

alimento .id - alimento .Nome

Come devo fare per bindare la lista popolata alla TreeView ho provato a seguire degli esempi ma onestamente non ho proprio capito nulla. Qualcuno sa dirmi come devo fare?
Il modo più semplice è
trv_alimenti.ItemsSource = alimento;
ma così popoli solo il primo livello. Devi quindi preparare una struttura gerarchica, cioè in alimento avere una proprietà che dà una collezione della sotto categoria e così ricorisivamente.
Poi dovrai per forza usare il HierarchicalDataTemplate per far sì che tu possa indicare per il secondo livello cosa caricare come figli. Guarda questo esempio che è ben fatto http://msdn.microsoft.com/en-us/library/system.windows.hierarchicaldatatemplate.aspx

Ciao

Il mio blog
Homepage
18 messaggi dal 20 ottobre 2010
Ora ho 2 problemi, vedo il nodo padre e il figlio ma PROBLEMA:
1. SCRIVE IL NODO FIGLIO IN VERTICALE esempio:

-carne
b
i
s
t
e
.
.
-pesce
s
a
l
.
.

Sapreste dirmi come è possibile, so di percerto che non dipende dallo stile, semplicemente bindandola alla lista mi da questo risultato

2.se il gruppo di alimenti si ripete per ogni alimento figlio ho l'alimento padre
esempio:

pesce
salmone
pesce
sogliola



ESEMPIO TREEVIEW
<TreeView Margin="10,10,0,13" x:Name="trv_alimenti"
HorizontalAlignment="Left" VerticalAlignment="Top" Width="300">
<TreeView.Resources>

<HierarchicalDataTemplate DataType="{x:Type local:Alimento}" ItemsSource="{Binding Nome}" >
<TextBlock Text="{Binding Gruppo}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>

SELECT:

public IList<Alimento> GetListaAlimenti()

{
List<Alimento> LTalimento = new List<Alimento>();
Alimento a = new Alimento();
using (System.Data.EntityClient.EntityConnection conn = new System.Data.EntityClient.EntityConnection("name=CK_ALIMENTO"))
{
conn.Open();

System.Data.EntityClient.EntityCommand comm = conn.CreateCommand();
comm.CommandText = "select al.CF01_ID, al.CF01_NOME, gr.CF02_DESCRIZIONE from CK_ALIMENTO.CF01_ALIMENTO as al INNER JOIN CK_ALIMENTO.CF02_GRUPPO as gr on al.CF01_GRUPPO=gr.CF02_ID order by gr.CF02_ID";
System.Data.EntityClient.EntityDataReader re = comm.ExecuteReader(System.Data.CommandBehavior.SequentialAccess);
while (re.Read())
{
a=new Alimento() ;
a.id = (Int32)re.GetInt32(0);
a.Nome =(String)re.GetString(1).Trim();
a.Gruppo = (String)re.GetString(2).Trim();
LTalimento.Add(a);
}
re.Close();
}

return LTalimento;
}
lista per binding treeview

internal void LessSingleAlimento()
{
dbAlimento fcx = new dbAlimento();
alimento = fcx.GetListaAlimenti();
trv_alimenti.ItemsSource = alimento;
}
2.198 messaggi dal 30 novembre 2001
posta la soluzione potrebbe essere utile ad altre persone che hanno il tuo stesso problema.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.