Bonjour
Décidément, je galère à chaque pas. Mais je ne vais pas me décourager.
Ma DatagridView branchée sur ma table SQLite fonctionne bien.
J'ai en fait 2 tables, une pour les documents et l'autre pour les groupes de documents.
Les documents peuvent être des factures, des résultats médicaux, etc.
Dans la DatagridView, j'ai mis une liste pour choisir le groupe auquel appartient le document.
Pour obtenir les données de la liste, j'utilise un Datatable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DataTable tableg = GetData("select id, group_name from groups", database.SqliteCnx()); ColComboBox.DataSource = tableg;
Suivant les conseils qu'on m'a donné ici, j'ai installé Dapper et j'ai codé l'équivalent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 internal class Groupe { public int id { get; set; } public required string group_name { get; set; } public string? description { get; set; } }Avec un point d'arrêt dans le code, je vérifié de contenu de groups et je vois bien mes différents groupes avec leurs id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3groups = database.SqliteCnx().Query<Groupe>("select id, group_name from groups"); ColComboBox.DataSource = groups;
Problème, à l'éxecution, je ramasse une erreur au moment où la grille tente de se remplir :
Quand je clique sur ok, je vois que la première ligne de la colonne Groupe affiche l'id du groupe au lieu d'afficher son nom.---------------------------
Boîte de dialogue Erreur par défaut DataGridView
---------------------------
L'exception suivante s'est produite dans le DataGridView*:
System.FormatException: La valeur DataGridViewComboBoxCell n'est pas valide.
Pour remplacer cette boîte de dialogue par défaut, traitez l'événement DataError.
---------------------------
OK
---------------------------
A chaque ligne, j'ai le même problème.
Donc je comprends l'exception FormatException puisqu'un nombre essaye de s'afficher au lieu d'un string.
Mais je ne comprends pas pourquoi il veut afficher l'id au lieu du nom :-(
Voilà le code concernant la colonne qui pose problème.
Une idée pour que je continue à avancer ?
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
20DataGridViewComboBoxColumn ColComboBox = new DataGridViewComboBoxColumn(); ColComboBox.HeaderText = "Groupe"; ColComboBox.DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton; ColComboBox.DisplayIndex = 2; ColComboBox.Width = 150; ColComboBox.ValueType = typeof (string); // NE FONCTIONNE PAS groups = database.SqliteCnx().Query<Groupe>("select id, group_name from groups"); ColComboBox.DataSource = groups; // Fonctionne bien // DataTable tableg = GetData("select id, group_name from groups", database.SqliteCnx()); // ColComboBox.DataSource = tableg; ColComboBox.ValueMember = "id"; ColComboBox.DisplayMember = "group_name"; ColComboBox.DataPropertyName = "group_id"; dataGridView1.Columns.Add(ColComboBox);![]()








Répondre avec citation
Partager