Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Popolamento dinamico di un Tree
martedì 17 novembre 2009 - 16.55
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Franto
Profilo
| Junior Member
75
messaggi | Data Invio:
mar 17 nov 2009 - 16:55
Ciao a tutti, spero di essere il più preciso possibile nel descrivere il mio problema.
Ho una tabella (MENUITEM) con questi dati:
ID__________ITEMSDETITOL_______________ITEMSIDCHILD
1_____________Acquisti____________________[i]Null[/i]
2_____________Vendite_____________________[i]Null[/i]
3__________Anagrafica clienti__________________2
4__________Anagrafica fornitori________________1
Praticamente il campo ITEMSIDCHILD, mi indica se si tratta di un nodo root (Null) o a quale nodo root appartiene.
Ora, come posso costruire la struttura del mio Tree una volta estratti i dati?
Grazie.
--------------------------------------------------------------
Il destino è solo una giustificazione a ciò che è accaduto, che accade e che accadrà. Apriamo gli occhi e riprendiamoci la nostra vita.
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mar 17 nov 2009 - 17:22
1204_WindowsApplication9.zip
Ciao.
Ti ho allegato un progetto di esempio che fa al caso tuo.
Ciao
Cristian Barca
Franto
Profilo
| Junior Member
75
messaggi | Data Invio:
mar 17 nov 2009 - 17:43
Perfetto.
Grazie
Ciao
--------------------------------------------------------------
Il destino è solo una giustificazione a ciò che è accaduto, che accade e che accadrà. Apriamo gli occhi e riprendiamoci la nostra vita.
Franto
Profilo
| Junior Member
75
messaggi | Data Invio:
mer 18 nov 2009 - 10:26
Ciao, ho visto il progettino e mi è stato molto utile x capire il meccanismo..un'ultima domanda.
Una volta terminato il popolamento del Tree, per ogni nodo "child" mi dovrebbe partire un programma..
Avevo pensato di testare il .Text al dopprio click sul nodo, ma questo non mi eviterebbe il dover intervenire sul codice ogni volta che inserisco un nuovo programma..
Un'altra idea era quella di inserire un nuovo campo nella mia tabella MENUITEM dove vado a mettere il nome della form da attivare, ma dopo non saprei come gestire la conversione da "stringa" a "form"...
Hai delle idee migliori per evitare di modificare da codice il programma?
Grazie
--------------------------------------------------------------
Il destino è solo una giustificazione a ciò che è accaduto, che accade e che accadrà. Apriamo gli occhi e riprendiamoci la nostra vita.
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mer 18 nov 2009 - 10:48
1205_WindowsApplication9.zip
Ciao. ti ho riallegato il programma di esempio.
Praticamente ho ricreato la classe "treeNode" e gli ho aggiunto come proprietà il percorso del programma da eseguire.
Nel caso in cui però non è un programma esterno da aprire ma form diverse della stessa applicazione, si dovrebbe usare la reflection per instanziare form a partire dal loro nome ma non l'ho mai fatto.
Un accrrocco veloce è quello di scrivere nella proprietà che ti ho aggiunto (ne puoi creare anche tu di altre di qualsiasi tipo) il nome della form da aprire e nell'evento del doppio click sul nodo controllare il nome associato al nodo e instanziare di conseguenza la form. Non è un ottimo approccio ma funziona.
ciao ciao
Cristian Barca
Franto
Profilo
| Junior Member
75
messaggi | Data Invio:
mer 18 nov 2009 - 12:51
Ciao, sono riuscito a usare la Reflection.
Vi posto il codice.
Io per la lettura da db uso l'ORM lightspeed, ma va benissimo anche con una classica lettura da datatable..
using System.Reflection;
...
...
...
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
using (ModelUnitOfWork uow = Repository.Context.CreateUnitOfWork())
{
IList<Menuitem> vMenuitem = uow.Find<Menuitem>(Entity.Attribute("ITEMSDEPATH") == e.Node.FullPath.ToString());
if (vMenuitem[0].Itemsidchild == null)
{
return;
}
try
{
Assembly vAssembly = Assembly.GetExecutingAssembly();
Form vForm = vAssembly.CreateInstance(vMenuitem[0].Itemsdeform) as Form;
vForm.ShowDialog();
}
catch (System.NullReferenceException exNull)
{
MessageBox.Show("Nessun programma associato alla voce di menu", "Programma non trovato");
System.Diagnostics.Trace.WriteLine("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-" +
Environment.NewLine + "Project Load" +
Environment.NewLine + exNull.ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
uow.Dispose();
}
}
E anche la fonte da cui ho preso "ispirazione" ..
http://www.csharphelp.com/archives4/archive604.html
Il tuo programma mi verrà comunque utile per agganciare programmi esterni!
Grazie ancora per l'aiuto!!
Ciao
--------------------------------------------------------------
Il destino è solo una giustificazione a ciò che è accaduto, che accade e che accadrà. Apriamo gli occhi e riprendiamoci la nostra vita.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !