Sub per visualizzare i file dell’applicazione con un controllo Treeview, escludendo directory e file non necessari.

Sub che viene lanciata sull'evento che popola il treeview, potrebbe essere un Page_load per es:

private void populatetree()
{
    // directory principale

    directoryinfo
rootfolder = new directoryinfo(server.mappath("~/"));   
    treenode
root = aggiunginodi(rootfolder, null);

    aggiungifile(rootfolder, root);

   
tvfile.nodes.add(root);
    // riduco tutti i "rami"
    tvfile.collapseall();

    // espando la root
    tvfile.nodes[0].expand();
}

aggiunge i file ai folder
/// <summary>
///
aggiungi file alla directory in esame
/// </summary>
///
<param name="subfolder"></param>
///
<param name="node"></param>
private void aggiungifile(directoryinfo subfolder, treenode node)
{
    // tipi di file da aggiungere
   
string[] extensionfile = { ".aspx", ".html", ".htm", ".jpg", ".jpeg", ".gif", ".txt", ".png" };
    foreach (fileinfo f in subfolder.getfiles("*.*"))
    {
        if (extensionfile.contains(f.extension.tolower()))
        {
            treenode child = new treenode(f.name);
            node.childnodes.add(child);
        }
    }
}

aggiunge i folder al treeview
/// <summary>
///
aggiungi un nodo all'albero
/// </summary>
///
<param name="folder"></param>
///
<param name="parentnode"></param>
///
<returns></returns>
treenode aggiunginodi(directoryinfo folder, treenode parentnode)
{
    // folder da escludere
    string[] foldertoexclude = { "app_data", "bin", "obj", "properties" };
    string virtualfolderpath;
    if (parentnode == null)
        virtualfolderpath = "~/";
    else
       
virtualfolderpath = parentnode.value + folder.name + "/";

    treenode node = null;
    // controllo sulle cartelle da escludere
   
if (!foldertoexclude.contains(folder.name.tolower()))
    {
        // creo il nodo
       
node = new treenode(folder.name, virtualfolderpath);
        // info sulla directory
       
directoryinfo[] subfolders = folder.getdirectories();
        // ciclo sulla directory
       
foreach (directoryinfo subfolder in subfolders)
        {
            if (!foldertoexclude.contains(subfolder.name.tolower()))
            {
                // aggiungi eventualmente la sottodirectory
               
treenode child = aggiunginodi(subfolder, node);
                node.childnodes.add(child);
                // aggiungi i file
               
aggiungifile(subfolder, child);
            }
        }
    }
return node;
}
   
controllo treeview
<asp:treeview id="tvfile" runat="server" font-names="verdana" font-size="12px" forecolor="#666666" imageset="xpfileexplorer">
    <
nodestyle horizontalpadding="8px" imageurl="~/images/folderclose.gif" nodespacing="2px" verticalpadding="2px" />
    <
leafnodestyle imageurl="~/images/file.gif" />
</
asp:treeview>

0 commenti