Bonjour,

J'ai une liste d' entree. Chaque entree est liée à une rubrique.
Pour afficher cela j'ai un datagridView lié un dataset. Dans ce dataset il y a deux tables:

entree: représente la liste des entrees
Cette table contient 3 colonnes:
- le code de l'entree
- le nom de l'entree
- l'id de la rubrique à laquelle il est lié

Rubrique: représente la liste des rubriques
Cette contient deux colonnes
- l'id de la rubirque
- le nom de la rubrique

Les rubriques sont afficher dans une liste dans la datagridview.
Toutes les colonnes de la table entree sont affiché.

Donc le datagridView contient 3 colonnes + 1 qui est une liste (DataGridViewComboBoxColumn) de toutes le rubriques.

Voici mon problème, je n'arrive pas à liés rubrique et entree.
J'aimerai qu quand je selectionne une rubirque dans la liste la colonne id_rubrique de la table entree soit automatiquement inscrite.
Et que quand je remplit mon dataset la rubrique de la liste soit automatiquement selectionner en fonction de l'id_rubrique de la table entree.

J'ai reussi à afficher la liste de mes entree, a afficher la liste de mes rubriques dans une liste. Mais la liaison que j'ai créer ne marche pas.

Voici mon code:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
DataSet dataset_entrees = new DataSet();
//initialisation des dataset
initTableEntree();
initTableRubrique();
createRelationEntreeRubrique();
//Affichage des entrees dans la datagridView
dataSet_entreesToDataGridView_entrees();
 
private void initTableEntree()
        {
            dataset_entrees = new DataSet();
            //ajout des colonnes
            dataset_entrees.Tables.Add("entree");
            dataset_entrees.Tables["entree"].Columns.Add("Code entree", Type.GetType("System.Int32"));
            dataset_entrees.Tables["entree"].Columns.Add("Nom de l'entree", Type.GetType("System.String"));
            dataset_entrees.Tables["entree"].Columns.Add("id_rubrique", Type.GetType("System.Int32"));
            dataset_entrees.Tables["entree"].Columns[0].Unique = true;
            dataset_entrees.Tables["entree"].Columns[0].AllowDBNull = false;
            dataset_entrees.Tables["entree"].Columns[1].AllowDBNull = false;
            remplirEntree();//cette fontion importe les données de la BDD vers la table entree            
        }
 
 
 //initialise le dataset contenant la liste des rubriques
        private void initTablerRubrique()
        {
            //ajout des colonnes
            dataset_entrees.Tables.Add("rubrique"); ;
            dataset_entrees.Tables["rubrique"].Columns.Add("id_rubrique", Type.GetType("System.Int32"));
            dataset_entrees.Tables["rubrique"].Columns.Add("Rubrique", Type.GetType("System.String"));
            remplirTableRubrique();//cette fonction importe les données de la BDD vers la table rubrique
        }
 
 private void createRelationEntreeRubrique()
        {
            DataRelation relation = new DataRelation("entree-rubrique",dataset_entrees.Tables["rubrique"].Columns[0],
                                                                       dataset_entrees.Tables["entree"].Columns[2]);
            dataset_entrees.Relations.Add(relation);
        }
 
 //Cette fonction insère toutes les entrées dans le datagridView_entree
        private void getEntreesToDataGridView_entrees()
        {
 
            this.dataGridView_entrees.DataSource = dataset_entrees.Tables["entree"];
            DataGridViewComboBoxColumn comboboxColumn = CreateComboBoxColumn_rubrique();
            this.dataGridView_entrees.Columns.Add(comboboxColumn);
        }
 
        //création d'un datagridviewComboBoxColum
        private DataGridViewComboBoxColumn CreateComboBoxColumn_rubrique()
        {
            DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
 
            column.DropDownWidth = 160;
            column.Width = 90;
            column.MaxDropDownItems = 10;
            column.FlatStyle = FlatStyle.Flat;
            column.Name = "Rubrique";
            column.DataSource = dataset_entrees.Tables["rubrique"];
            column.ValueMember = "id_rubrique";
            column.DisplayMember = "Rubrique";
 
            return column;
        }
Ma liaison ne marche pas, Si je selectionne une valeur dans ma liste de rubrique la colonne id_rubrique de la table entree ne se modifie pas et quand je remplit ma table entree la rubrique ne se selectionne pas dans la liste.

COmment faire?

Merci d'avance