Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C#] Treeview Gerarchie Padre/Figlio

    Buongiorno,
    come da titolo ho un problema con la treeview in c#.
    Il mio scenario è il seguente:
    Ho dei codici all'interno di un database divisi come :
    codice_padre ; codice_figlio ; check_figlio

    Il terzo campo mi indica se quel codice figlio è anche un codice padre.
    Ora non è difficile immaginare quello di cui ho bisogno.
    Riprodurre la gerarchia presente sul mio DB , nel mio TreeView.

    So che per queste cose si usano ricorsive e quant'altro. Sono ormai quattro giorni che cerco una soluzione ho googlato abbastanza ma ora ho proprio bisogno di voi.

    Per chiarezza faccio un esempio:

    123456
    |_______56789
    |_______10111213

    Il codice 123456 è un codice padre che ha a sua volta 56789 che è un suo figlio il quale ha un figlio che si chiama 10111213.

    A tutto ciò si va a sommare il fatto che posso avere anche più padri e quindi lo scenario cambia nel seguente modo :

    123456
    |____56789
    |________10111213
    654321
    |_____56874

    Non so se sono stato chiaro nel caso domandate pure, GRAZIE , confido in voi

  2. #2

    UP

    UP

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Non puoi crearti un DataSet e aggiungergli la relazione Father/Child e poi bindarlo al treeview?

    In questo modo non hai bisogno di scriverti la procedura ricorsiva per il treeview

    Nella struttura che hai fatto dovresti metti il nodo Radice da cui nascono tutti i figli e poi crearti la struttura gerarchica tramite ricorsione partendo dal nodo 0.

    0
    |
    123456
    |____56789
    |________10111213
    654321
    |_____56874
    |
    ...
    ...
    ...

    A questo punto non ti serve neanche il terzo campo visto che tutti i padri sono quelli che nascono dal nodo 0.

  4. #4
    Grazie della tua risposta che già mi da qualche barlume di speranza.
    DataSet:
    Come si costruisce e come lo dovrei costruire purtroppo non ne ho mai utilizzato uno.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Il dataset era solo una possibile soluzione, la prima che mi è venuta in mente. In sostanza ti fai la query sulla tabella dove c'è la struttura gerarchica, setti le relazioni sul dataset e poi bind al treeview


    codice:
        string cmd = "select * from table";
        SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(cmd, connection);
       
        mioDataSet = new DataSet();
        mioSqlDataAdapter.Fill(mioDataSet,"NomeTabella")
    
    
      //Crei la relazione Padre/figlio
    
    
            DataColumn colIdFiglio = mioDataSet .Tables["NomeTabella"].Columns["ID_FIGLIO"];
            DataColumn colIdPadre = mioDataSet .Tables["NomeTabella"].Columns["ID_PADRE"];
    
          
            DataRelation r = mioDataSet .Relations.Add(colIdFiglio, colIdPadre);
            r.Nested = true;
    
    
           //Bind sul controllo treeview

  6. #6
    Lui a quel punto come fa a sapere chi è padre e chi è figlio e se quel figlio è anche padre ?

  7. #7
    UP

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Originariamente inviato da submother
    Lui a quel punto come fa a sapere chi è padre e chi è figlio e se quel figlio è anche padre ?

    Magari non ho capito bene io il problema, ma la struttura padre/figlio è:


    0
    |
    123456
    |____56789
    |________10111213
    654321
    |_____56874
    |


    partendo da 0 ci sono figli 123456 e 654321

    123456 ha 1 figlio che è 56789 che ha sua volta ha un figlio 10111213

    nel db la struttura sarà

    ID_PADRE | ID_FIGLIO

    NULL | 0
    0 | 123456
    123456 | 56789
    56789 | 10111213
    0 | 654321
    654321 | 56874


    Questa è la classica struttura del treeview. C'è qualcosa che mi sfugge? Cosi identifichi tutti i padri e i figli

  9. #9
    No sicuramente mi sono espresso io male per questo motivo ti spiegherò tutto nel dettaglio.
    innanzi tutto grazie della pazienza e delle risposte.

    Sto lavorando su un database SQL con Sql Managment Studio 2008. Dove ho la situazione che vedi in figura:



    Uploaded with ImageShack.us
    Nella mia form ho questo treeview che vorrei popolare con la logica che ci siamo detti.
    Per collegarmi al database scrivo la seguente sintassi:

    codice:
    SqlDataReader dr = cn.set_connection("select c_articolo_padre , c_articolo FROM dbo....")
    while(dr.read())
    {
      treeview.Nodes.Add(dr.getvalue(0).ToString());
    }
    In questo modo lui mi da tutti i codici figli di un determinato codice padre che gli passo da un altra form. Ora il mio problema è che quei codici figlio potrebbero essere a loro volta dei padri.
    Tu mi parli di DataSet che ho provato a creare , creando una tabella con le stesse identiche colonne ma ho le seguenti perplessita:
    1) Come la popolo?
    2) Una volta popolata come rappresento graficamente la gerarchia?

    Dovrei utilizzare una ricorsiva? Se si HOW?
    Non riesco proprio a popolarla e mi sto avvilendo pesantemente

  10. #10
    UP

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.