2 pièce(s) jointe(s)
Dapper, SQLite, DatagridView et DataGridViewComboBoxColumn
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:
1 2
| DataTable tableg = GetData("select id, group_name from groups", database.SqliteCnx());
ColComboBox.DataSource = tableg; |
Pièce jointe 677561
Suivant les conseils qu'on m'a donné ici, j'ai installé Dapper et j'ai codé l'équivalent.
Code:
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; }
} |
Code:
1 2 3
|
groups = database.SqliteCnx().Query<Groupe>("select id, group_name from groups");
ColComboBox.DataSource = groups; |
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.
Problème, à l'éxecution, je ramasse une erreur au moment où la grille tente de se remplir :
Citation:
---------------------------
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
---------------------------
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.
A chaque ligne, j'ai le même problème.
Pièce jointe 677562
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.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
DataGridViewComboBoxColumn 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); |
Une idée pour que je continue à avancer ? :oops: