begin process at 2008 07 20 10:13:43
1 213 168 membres
87 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

L'INTERFACE IHIERARCHICALENUMERABLE - BINDEZ VOS MENU/TREEVIEW AVEC VOTRE PROPRE SOURCE DE DONNÉES


Information sur la source



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

  • 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/" />
    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 ;-)
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de spool999 le 28/06/2007 13:33:51

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

  • signaler à un administrateur
    Commentaire de waterw72 le 13/07/2007 11:47:10

    Bonjour,
    n'aurais-tu pas la version vb ?
    merci

  • signaler à un administrateur
    Commentaire de arcollet le 13/04/2008 02:03:43

    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

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

Snippets en rapport

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS