Bonjour,

Je suis entrain de développer une petite application windows en C# dans laquelle j'utilise une datagridview qui contient des checkbox au niveau de la première colonne.

Le remplissage de la datagridview se fait à l'aide d'une datatable.

Je voudrais récupérer toutes les lignes cochées dans une liste, parcourir la liste et exécuter une action quelconque pour chaque ligne de la liste.

Dans un premier temps, j'ai voulu tester le code ci-dessous afin de compter le nombre de lignes cochées. Mais, j'obtiens l'erreur suivante

System.FormatException*: 'La chaîne n'a pas été reconnue en tant que Boolean valide.'
au niveau de la ligne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
if (bool.Parse(item.Cells[0].Value.ToString()))
CODE:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
private void button1_Click(object sender, EventArgs e)
{
	foreach (DataGridViewRow item in dataGridView1.Rows)
	{
		if (bool.Parse(item.Cells[0].Value.ToString()))
		{
			MessageBox.Show("Selected Rows : " + item.Cells[0].RowIndex.ToString());
		}
	}
}
Dans un second temps, j'ai voulu tester le code ci-après mais ceci génère un autre message d'erreur

System.InvalidCastException*: 'Impossible d'effectuer un cast d'un objet de DBNull en d'autres types.'
au niveau de la ligne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 if (Convert.ToBoolean(drow.Cells[0].Value) == true)
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
private void button1_Click(object sender, EventArgs e)
{
	List<string> selectedItem = new List<string>();
	DataGridViewRow drow = new DataGridViewRow();
 
	for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
	{
		drow = dataGridView1.Rows[i];
		if (Convert.ToBoolean(drow.Cells[0].Value) == true)
		{
			string id = drow.Cells[0].Value.ToString();
			selectedItem.Add(id);
		}
	}
}
Merci,