IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

treeview 3 niveaux


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut treeview 3 niveaux
    Bonjour,

    j'ai créer un treeview sur 2 niveaux mais j'en ai besoin de 3 et n'arrive pas du tout à le faire. Pouvez-vous m'aider s'il vous plait?
    Que dois-je rajouter coté code pour que cela fonctionne?
    (si vous avez un tutoriel sur les treeview, je suis preneur!).

    Ex :
    TypeArticle
    -- Article1
    ---- Particularite1
    ---- Particularite2
    -- Article2
    ---- Particularite1
    -- Article3

    Code XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <Window.Resources>
            <DataTemplate x:Key="ArticleTemplate">
                <TextBlock Text="{Binding Designation}"></TextBlock>
            </DataTemplate>
            <HierarchicalDataTemplate x:Key="TypeArticleTemplate" 
                                      ItemsSource="{Binding childRelation}" 
                                      ItemTemplate="{StaticResource ArticleTemplate}">
                <TextBlock Text="{Binding Nom}" ></TextBlock>
            </HierarchicalDataTemplate>
    </Window.Resources>
     
     <TreeView Name="ArboTypeArt" DockPanel.Dock="Left" Background="Azure" Width="200" Margin="10,10,21,30" 
                      ItemsSource="{Binding TypeArticle}"
                      ItemTemplate="{StaticResource TypeArticleTemplate}" SelectedItemChanged="ArboChangeSelection">
            </TreeView>
    Code VB.net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Private Sub classWindow_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
            BindData()
            ChargerDonneesTypeArticle()
    End Sub
     
    Private Sub BindData()
     
            Me.ArboTypeArt.DataContext = GetRelationalData()
    End Sub
     
    Function GetRelationalData() As DataSet
     
            Dim dataSet As New DataSet()
     
            Dim TypeArtAdapter As New OleDbDataAdapter()
            TypeArtAdapter.SelectCommand = New OleDbCommand("SELECT * FROM TypeArticle", conn)
            TypeArtAdapter.Fill(dataSet, "TypeArticle")
     
            Dim ArtAdapter As New OleDbDataAdapter()
            ArtAdapter.SelectCommand = New OleDbCommand("SELECT * FROM Articles ORDER BY Designation ASC", conn)
            ArtAdapter.Fill(dataSet, "Articles")
     
            Dim table1Column As DataColumn
            Dim table2Column As DataColumn
            table1Column = dataSet.Tables("TypeArticle").Columns("IDTypeArticle")
            table2Column = dataSet.Tables("Articles").Columns("IDTypeArticle")
     
            Dim CategoryRelation As New DataRelation("childRelation", table1Column, table2Column, True)
            CategoryRelation.Nested = True
     
            dataSet.Relations.Add(CategoryRelation)
     
            Return dataSet
     
    End Function
    D'avance, merci à tous pour votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    bah c'est le même principe, il faut une relation entre les tables Article et Particularité, et un HierarchicalDataTemplate pour les articles...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Bonjour et merci pour ta réponse tomlev.

    Comment je dois remplir le dataset, est-ce que je dois faire une fonction pour le remplir en 2 temps ou bien dois-je faire les 2 relations dans le même dataset?
    J'ai essayé les 2 même si je pense qu'il faut le faire dans le même dataset mais sans succès.
    Peux-tu me guider un peu plus s'il te plait?

    D'autre part, je voudrai bloquer l'utilisateur sur les clics 'parents' (donc type article) est-ce possible et si oui comment s'il te plait?

    Merci pour votre aide.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Pour bloquer les clics sur les parents il faut que tu interceptes l'évènement click, et que tu regardes si le noeud à un parent, si il n'en a pas c'est que c'est un noeud de premier niveau

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par miky77 Voir le message
    Comment je dois remplir le dataset, est-ce que je dois faire une fonction pour le remplir en 2 temps ou bien dois-je faire les 2 relations dans le même dataset?
    J'ai essayé les 2 même si je pense qu'il faut le faire dans le même dataset mais sans succès.
    Peux-tu me guider un peu plus s'il te plait?
    Oui, il faut tout mettre dans le même DataSet. Ton DataSet doit contenir les types d'article, les articles, et les particularités, avec les relations qui vont bien. C'est exactement pareil que ce que tu as déjà fait, mais avec une table de plus...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    OK merci beaucoup tomlev!
    Je me mélangeais les pinceaux dans le xaml...
    Voici ce qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <Window.Resources>
            <DataTemplate x:Key="PropTemplate">
                <TextBlock Text="{Binding Nom}"></TextBlock>
            </DataTemplate>
            <HierarchicalDataTemplate x:Key="ArticleTemplate" 
                                      ItemsSource="{Binding childRelation2}" 
                                      ItemTemplate="{StaticResource PropTemplate}">
                <TextBlock Text="{Binding Designation}" ></TextBlock>
            </HierarchicalDataTemplate>
            <HierarchicalDataTemplate x:Key="TypeArticleTemplate" 
                                      ItemsSource="{Binding childRelation}" 
                                      ItemTemplate="{StaticResource ArticleTemplate}">
                <TextBlock Text="{Binding Nom}"></TextBlock>
            </HierarchicalDataTemplate>
        </Window.Resources>
    Reste mon problème de verrouiller les parents (typeArticle).
    Comment je peux regarder si le noeud a un parent?

    Merci.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTreeView.SelectedNodes.Parent Is Nothing
    Si mes souvenirs sont bon...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Mais je n'ai pas 'SelectNodes'...
    Je met 'Me.NomTreeview.' et là j'ai SelectedItem ou SelectedValue mais pas SelectNodes.
    (je suppose que c'est parce que je l'ai rempli avec un dataset?)
    Merci encore.

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub toto()
            Dim monTreeView As New TreeView
            If monTreeView.SelectedNode.Parent Is Nothing Then
                'Ton traitement
            End If
        End Sub

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Shadam Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub toto()
            Dim monTreeView As New TreeView
            If monTreeView.SelectedNode.Parent Is Nothing Then
                'Ton traitement
            End If
        End Sub
    Ca ce serait pour Windows Forms... mais là c'est une application WPF

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Ca ce serait pour Windows Forms... mais là c'est une application WPF
    Je me disais bien aussi...

Discussions similaires

  1. Treeview plusieurs niveaux
    Par smith25 dans le forum VB.NET
    Réponses: 5
    Dernier message: 05/04/2017, 10h58
  2. TreeView Index niveaux
    Par Sky14b dans le forum Delphi
    Réponses: 2
    Dernier message: 04/07/2015, 16h54
  3. Peupler un TreeView sur de multiples niveaux
    Par digitaldna dans le forum C#
    Réponses: 8
    Dernier message: 31/08/2010, 15h44
  4. Binding d'un TreeView sur plusieurs niveaux avec images
    Par Spikuria dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 25/05/2009, 17h17
  5. [C#] TreeView avec CheckBox à certain niveaux
    Par Maxsin dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/04/2006, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo