Visualizzazione dati in TreeView con WinForms

di il
6 risposte

Visualizzazione dati in TreeView con WinForms

Buonasera a tutti. Non conoscendo a priori l'ordine di grandezza del numero di record da visualizzare sotto forma di nodi di un controllo TreeView, dite che convenga un minimo di gestione della memoria per non intasare troppo l'applicazione? Oppure esistono già degli accorgimenti "ben noti" per questi casi?

Andando molto ad intuito, pensavo di fissare un limite al numero di nodi caricabili/visualizzabili contemporaneamente; quindi se il set di dati non supera questo numero allora caricarlo tutto, viceversa stabilire una tecnica per economizzare la memoria.
In quest'ultimo caso però, la cosa mi sembra più facile da dire che da fare. Non vorrei cioè finire per impantanarmi in mille cavilli.

6 Risposte

  • Re: Visualizzazione dati in TreeView con WinForms

    Salve,
    la tecnica solitamente utilizzata consiste nel caricare solamente "il primo livello" di nodi e, nell'evento click di ogni nodo (e successivamente dei relativi children), si carica man mano il livello successivo di nodi children eventualmente risultanti... tipo File Explorer...
    ad esempio vedi https://www.codeproject.com/Articles/70414/Fast-Updating-of-Treeview-Control-With-a-Database
    salutoni
    --
    Andrea
  • Re: Visualizzazione dati in TreeView con WinForms

    Grazie della risposta. L'unico dubbio con questo approccio è: se i record sono comunque tanti, il problema non è solo rimandato a quando l'utente espanderà l'n-esimo nodo?
    A meno che -sto pensando- non si implementi una logica per comprimere automaticamente i nodi non selezionati, scaricandone il contenuto.
  • Re: Visualizzazione dati in TreeView con WinForms

    Salve,
    non so quanto sia "performante" scaricare i nodi non selezionati, tanto piu' che probabilmente e' anche possibile che l'utente voglia "richiamarli" nuovamente, richiedendo quindi una nuova scansione e caricamento...
    al di la' di tutto, il caricamento "on demand" e' sicuramente performante e probabilmente richiede meno memoria in quanto e' probabile che l'utente non acceda a tutti i nodi e quindi molte scansioni/caricamenti NON saranno effettuate...
    salutoni
    --
    Andrea
  • Re: Visualizzazione dati in TreeView con WinForms

    Ok allora farò così. Grazie ancora!
  • Re: Visualizzazione dati in TreeView con WinForms

    Antologiko ha scritto:


    L'unico dubbio con questo approccio è: se i record sono comunque tanti, il problema non è solo rimandato a quando l'utente espanderà l'n-esimo nodo?
    Oltre a quanto è stato già detto, se subentra la necessità di caricare un numero così spropositato di nodi, forse il controllo TreeView da solo non è uno strumento di navigazione efficiente di quelle informazioni e converrebbe a quel punto ripiegare su qualcosa di diverso, tipo una griglia, magari appoggiandosi al TreeView per una selezione di massima (es. nodi che non sono foglie) e poi mostrare i dettagli più numerosi in un elenco separato.

    Voglio dire, è come se io volessi far scegliere il numero di porta per un servizio che comunica via TCP con una ComboBox: non avrebbe molto senso elencare tutti i numeri di porta disponibili in un elenco, perché diventerebbe oltremodo lungo... piuttosto lo faccio inserire in una TextBox numerica.

    Ciao!
  • Re: Visualizzazione dati in TreeView con WinForms

    La sequenza di ragionamenti che faccio è questa, poi correggetemi se sbaglio .
    1) Secondo me non accadrà mai che ci sia una tale mole di dati, ma per una corretta programmazione mi tocca considerare tutte le casistiche.
    2) Se adatto la GUI ad un caso che magari non capiterà mai, magari non ci saranno sorprese spiacevoli, ma l'usabilità, almeno nel nel mio caso, diminuisce o comunque si complica.
    3) A questo punto bisognerebbe gestire a parte il caso ad esempio nel modo suggerito con griglia dati, ma solo quando si verifica. Ne vale la pena?

    L'alternativa più veloce forse sarebbe di controllare che non si stia superando un limite, avvisando l'utente che potrebbero verificarsi errori? Oppure tagliare la testa al toro e fissare esplicitamente il massimo numero di record visualizzabili (in proporzione alla ram?). Oppure, dubbio dei dubbi , mi sto facendo troppe pippe per qualcosa per cui non ne vale la pena!

    Comunque grazie ancora, mi sento sempre sempre in colpa quando vi 'rubo' del tempo.
Devi accedere o registrarti per scrivere nel forum
6 risposte