none
TreeView avec une EntityModel RRS feed

  • Question

  • Bonjour à tous,

    Je me tourne vers vous après moult recherche sur le TreeView. J'arrive à faire un lien avec une base de donnée (via EntityModel), avec 2 tables. Par contre, j'aimerais savoir comment faire pour faire un TreeView avec "x" noeuds, pas juste me limiter à 2.

    Voilà mon exemple.

    Table Catégorie :
    - IdCategorie - PK
    - NameCategorie 

    Table Groupes : - IdGroup - PK
    - NameGroup
    - IdCategorie - FK (clé étrangère avec 'Categories')

    Table Objets :
    - IdObjet - PK
    - NomObjet
    - IdGroup - FK (clé étrangère avec 'Groupes')

    Mon but est d'afficher les catégories. Au click sur l'une, afficher en enfant les groupes lié à cette catégorie, et pour une catégorie, afficher ces objets. Mes données sont en base de donnée SQL Server 2008, et le modèle d'entité est générer pas VS2010.

    Merci de votre aide.


    lundi 12 décembre 2011 19:59

Réponses

  • Bonjour,

    Cela fonctionne sur quel principe actuellement avec les deux niveaux ?

    Voir  http://stackoverflow.com/questions/269523/how-do-i-use-a-wpf-treeview-hierarchicaldatatemplate-with-linq-to-entities avec un HieararchicalDataTemplate pour chaque niveau qui indique avec ItemsSource la source des "enfants" :

          <TreeView x:Name="tvw">
              <TreeView.Resources>
                <HierarchicalDataTemplate DataType="{x:Type clr:Category}" ItemsSource="{Binding Groupes}">
                  <TextBlock Text="{Binding Path=Name}" />
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="{x:Type clr:Groupe}" ItemsSource="{Binding Objets}">
                  <TextBlock Text="{Binding Path=Name}" />
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="{x:Type clr:Objet}">
                  <TextBlock Text="{Binding Path=Name}" />
                </HierarchicalDataTemplate>
              </TreeView.Resources>
            </TreeView>
    

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse Anthony.Ryck mercredi 14 décembre 2011 08:18
    mardi 13 décembre 2011 18:42

Toutes les réponses

  • Bonjour,

    Cela fonctionne sur quel principe actuellement avec les deux niveaux ?

    Voir  http://stackoverflow.com/questions/269523/how-do-i-use-a-wpf-treeview-hierarchicaldatatemplate-with-linq-to-entities avec un HieararchicalDataTemplate pour chaque niveau qui indique avec ItemsSource la source des "enfants" :

          <TreeView x:Name="tvw">
              <TreeView.Resources>
                <HierarchicalDataTemplate DataType="{x:Type clr:Category}" ItemsSource="{Binding Groupes}">
                  <TextBlock Text="{Binding Path=Name}" />
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="{x:Type clr:Groupe}" ItemsSource="{Binding Objets}">
                  <TextBlock Text="{Binding Path=Name}" />
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="{x:Type clr:Objet}">
                  <TextBlock Text="{Binding Path=Name}" />
                </HierarchicalDataTemplate>
              </TreeView.Resources>
            </TreeView>
    

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse Anthony.Ryck mercredi 14 décembre 2011 08:18
    mardi 13 décembre 2011 18:42
  • Merci bien cela fonctionne.

    Donc en codebehind j'ai mis pour le :

    treeView.DataContext = EntityModel.Catégorie

    Ensuite :

    <TreeView.Resources>
       <HierarchicalDataTemplate DataType="{x:Type clr:Category}" ItemsSource="{Binding Groupes}">
         <TextBlock Text="{Binding Path=Name}" />
       </HierarchicalDataTemplate>

    Pour explication :

    * DataType="{x:Type clr:Category}" - correspond à table Catégorie.
    * ItemsSource="{Binding Groupes}" - correspond à la propriété de navigation pour aller sur la table "inférieur", soit la table Groupe.

    J'ai un autre soucis. Pas bien méchant. Sur mon TreeView, j'ai un texte qui s'ajoute en base : {NewItemPlaceholder}.
    Exemple :
    + Bloublou
    - BliBli
        - ralala
    {NewItemPlaceholder}

    Si vous avez une idée pour pouvoir l'enlever.

    • Modifié Anthony.Ryck mercredi 14 décembre 2011 08:36 Remise en forme
    mercredi 14 décembre 2011 08:28