L'interface ihierarchicalenumerable - bindez vos menu/treeview avec votre propre source de données

Soyez le premier à donner votre avis sur cette source.

Vue 14 571 fois - Téléchargée 483 fois

Description

Lorsque l'on utilise les controles Menu ou treeview d'asp.net on se sert généralement d'un XMLDataSource/SiteMapDataSource ou alors si veut dynamiquement peupler le controle on modifie directement la collection de noeuds.

Mais il existe une autre solution qui permet de faire
monTreeview.DataSource = myFiles;
monTreeview.DataBind();

La seule condition est que myFiles implémente IHierarchicalEnumerable.

Dans cet exemple je montre comment implémenter IHierchicalEnumerable pour afficher les fichiers et sous dossier d'un dossier. Je montre également comment créer son propre controle de datasource.

Source / Exemple :


protected void Page_Load(object sender, EventArgs e)
    {
        // on bind notre treeview avec les fichiers/dossier contenu dans le dossier d:/www/
        tv1.DataSource = new FileSystem(@"d:\www\", true);
        tv1.DataBind();
    }

    <asp:TreeView ID="tv1" runat="server" ImageSet="XPFileExplorer" NodeIndent="15" ExpandDepth="1" EnableViewState="false">
        <ParentNodeStyle Font-Bold="False" />
        <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
        <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px"
            VerticalPadding="0px" />
        <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px"
            NodeSpacing="0px" VerticalPadding="2px" />
            <DataBindings>
                <asp:TreeNodeBinding TextField="Name" />
            </DataBindings>
    </asp:TreeView>

---- Deuxieme solution possible en utilisant un FileSystemDatasource 

    <asp:TreeView ID="tv1" runat="server" ImageSet="XPFileExplorer" NodeIndent="15" ExpandDepth="1" DataSourceID="fsds1" EnableViewState="false">
        <ParentNodeStyle Font-Bold="False" />
        <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
        <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px"
            VerticalPadding="0px" />
        <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px"
            NodeSpacing="0px" VerticalPadding="2px" />
            <DataBindings>
                <asp:TreeNodeBinding TextField="Name" />
            </DataBindings>
    </asp:TreeView>
    <test:FileSystemDataSource  runat="server" id="fsds1" rootPath="d:/www/" />

Conclusion :


Cet exemple permet seulement de montrer l'utilisation des datasource Hierarchique. Mon code doit surement lever une exception dans le cas où l'utilisateur ASP.net n'a pas accès aux fichiers, etc...

Dans la vrai vie, il faudra gérer ces cas mais il est très rare de devoir mapper un treeview avec un hierarchie déjà existante ;-)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
31
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
13 avril 2008

Bonsoir,
Je cherche un code exemple concernant l'exploitation du datasource du controle menu d'asp.net2 afin de générer un menu et ses sous-menu à partir d'une base de donnée.
Auriez vous par hasard un code qui traine ?
Merci d'avance pour votre aide.
Denis
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008

Bonjour,
n'aurais-tu pas la version vb ?
merci
Messages postés
3
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
28 juin 2007

Merci Cyril pour l'exemlpe je n'ai pu testé que la premiere solution elle est tres interessante.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.