J'ai un DataGridView qui a une colonne ComboBox. Je remplir la liste de cette colonne avec des éléments d'un type terrain:DataGridViewComboBoxColumn - type d'éléments dans la liste déroulante
DataGridViewComboBoxColumn fieldsColumn = argumentsDataGridView.Columns["field"] as DataGridViewComboBoxColumn;
foreach (Field field in SessionData.Fields)
fieldsColumn.Items.Add(field);
fieldsColumn.DisplayMember = "Name";
Puis, après l'action de certains utilisateurs, je mets une valeur dans la cellule de cette colonne comme ceci:
private void AddArgument(string argumentName, Field field)
{
int index = argumentsDataGridView.Rows.Count;
argumentsDataGridView.Rows.Add(new DataGridViewRow());
DataGridViewRow newRow = argumentsDataGridView.Rows[index];
newRow.Cells["nameArg"].Value = argumentName;
-> newRow.Cells["field"].Value = field;
}
Si je maintenant accès la valeur de la cellule, elle est de type Champ. Si je sélectionne un élément différent du combo, la valeur de la cellule devient une chaîne. Comment puis-je le gérer? J'ai besoin d'articles de type Champ.
Comment allez-vous faire fonctionner cela? Lorsque j'ai exécuté un test simple, j'obtiens une exception System.ArgumentException? – BFree
où obtenez-vous cette exception? – agnieszka
J'ai créé une classe fictive avec trois propriétés. J'ai ensuite créé une liste de quelques-uns de ces objets, et les ai ajoutés à la ComboBoxColumn comme dans votre première méthode. Ensuite, j'ai répliqué votre deuxième méthode, en ajoutant une autre ligne, et en ajoutant un autre objet, mais ensuite obtenir une exception. – BFree