bonjour, aujourd'hui je m'attaque aux treeview ! c'est la première fois que j'en fais un ^^

voici ma table sql :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
create table categ_piece (
   id_categ_piece       uniqueidentifier     not null,
   id_categ_piece_parent   uniqueidentifier  null,
   nom_categ_piece      varchar(100)         not null,
   ordre_categ_piece    int                  not null,
   nb_points			int					 not null,
   constraint pk_categ_piece primary key nonclustered (id_categ_piece)
)
go
 
alter table categ_piece
add constraint fk_id_categ_piece_parent foreign key (id_categ_piece_parent) references categ_piece (id_categ_piece)
go
voici comment, dans mon winform, je cré une liste recueillant tous mes éléments :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
categs_pieces = categ_pieceDAL.GetList();
hey oui, j'utilise le DataAccess et le c#3, une grande évolution pour moi, j'essaie d'être un peu moins nul en prog ^^
bon, j'ai créé une fonction récursive pour créer mon arbre, mais ce n'est pas vraiment une réussite

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
37
38
private void Categ_pieceForm_Load(object sender, EventArgs e)
        {
            une_categ_piece = new categ_piece();
 
            categs_pieces = categ_pieceDAL.GetList();
            TreeNode LvlNode = new TreeNode();
            remplir_treeview(LvlNode, une_categ_piece);
        }
 
private void remplir_treeview(TreeNode LvlNodeSup, categ_piece une_categ_piece)
        {
            TreeNode LvlNode = new TreeNode();
 
            List<categ_piece> level_one = new List<categ_piece>();
 
            if(une_categ_piece.id_categ_piece == Guid.Empty)
            {
                level_one = (from c in categs_pieces
                            where c.id_categ_piece_parent == null
                            select c).ToList();
            }
            else
            {
                level_one = (from c in categs_pieces
                            where c.id_categ_piece_parent == une_categ_piece.id_categ_piece
                            select c).ToList();
            }
 
            foreach (categ_piece categorie in level_one)
            {
                LvlNode.Name = categorie.id_categ_piece.ToString();
                LvlNode.Text = categorie.nom_categ_piece;
 
                Categ_pieceTreeView.Nodes.Add(LvlNode);
 
                remplir_treeview(LvlNode, categorie);
            }
        }
pourriez-vous (encore) me donner un coup de main svp ?

merci