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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    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 : 43
    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
    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 averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    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 chevronné
    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
    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 : 43
    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
    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 averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    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 chevronné
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTreeView.SelectedNodes.Parent Is Nothing
    Si mes souvenirs sont bon...

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