Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C#] Creare alberatura cartelle

    Salve ragazzi, devo creare in una treeview l'alberatura delle cartelle di un determinato filesystem, i dati relativi alle cartelle(codice, livello ,codice della cartella padre) provengono da un database, grazie a questi dati devo fare in modo di creare questa alberatura. Io avevo pensato ad una soluzione ricorsiva, che crea automaticamente questa struttura, ma a quanto pare non è così semplice, perchè molto spesso incontro errori di overflow, oppure i nodi vengono creati nella posizione sbagliata. Qualcuno ha qualche idea, o magari qualche esempio per risolvere il mio problema? Grazie a chi mi vorrà aiutare

  2. #2
    devi crearti un sistema non ricorsivo

    ti posto il codice che ad esempio uso per percorrere un'albero di cartelle partendo da un percorso

    codice:
    ArrayList directories = new ArrayList();
    directories.Add(pathToBackup.Path);
    
    while(directories.Count > 0)
    {
    	string directory = (string)directories[0];
    	directories.RemoveAt(0);
    
    	backupRowControl.ProgressText = Path.GetFileName(directory);
    	Application.DoEvents();
    
    	try
    	{
    		foreach(string path in Directory.GetFiles(directory))
    		{
    			filesToBackup.Add(path);
    		}
    		
    		foreach(string path in Directory.GetDirectories(directory))
    		{
    			directories.Add(path);
    		}
    	}
    	catch(Exception)
    	{
    		// do nothing
    	}
    }
    come vedi in pratica creo un'elenco dal quale ad ogni ciclo prelevo un elemento

    nel caso specifico a te serve anche sapere dove andare ad inserire questi elementi quindi invece di aggiungere una stringa aggiungi una classe che ti crei dove ci sta l'oggeto figlio ed il relativo oggetto padre (o se i dati che estrai sono già strutturati cosi inserisci direttamente quelli, tanto è tutto per riferimento non viene duplicato nulla)

  3. #3
    Ti ringrazio per l'aiuto, ma io non devo percorrere un albero, devo crearlo, secondo i precisi dati che provengono dal db, e non so come fare

  4. #4
    ancora + semplice

    estrai e ti metti tutto in un'array

    dopo di che metti, in una seconda lista, gli elementi padre
    a questo punto ti cicli quest'array e ogni volta che becchi un elemento cerchi se nell'array che contiene tutto ci stanno elementi figlio ... e se ci stanno li inserisci a loro volta nell'array dell'elenco degli elementi da ciclare

    inoltre in quest'array che crei che contiene TUTTI gli elementi aggiungi anche un'altro campo, il TreeNode a cui si riferiscono, in modo che lo prendi da li e usi quello

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.