Mam problem z programowym ustawieniem elementu checkbox w danej kolumnie. Najpierw do obiektu DataTable przypisuje wynik zapytania do bazy danych. Potem wybieram 2 kolumny, które łączę z DataGridView i na sam koniec na sam początek wstawiam kolumne DataGridViewCheckBoxColumn:

DataGridViewCheckBoxColumn myColumn = new DataGridViewCheckBoxColumn();
myColumn.HeaderText = "Wybrano";
myColumn.Name = "selected";
dataGridView1.Columns.Insert(0, myColumn);

Kolumna ta się wyświetla, jednak nie jestem w stanie ustawić programowo wartości true/false. Na podstawie kolumny z DataTable chcę ustawić checkboxy, jednak nie potrafię tego zrobić.

Próbuję zmienić stan na kilka sposobów, lecz żaden z nich nie działa.

Pierwszy sposób poprzez pętlę:

for (int i = 0; i < tempTable.Rows.Count; i++)
{
    if ((int)tempTable.Rows[i][2] == 0)
    {
        dataGridView1.Rows[i].Cells[0].Value = true;
    }
}

Drugi sposób to na zakończenie łączenia danych z DataTable z DataGridView:

private void DataBound(object sender, DataGridViewBindingCompleteEventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
   {
      DataGridViewCheckBoxCell tempCell = (DataGridViewCheckBoxCell)row.Cells["selected"];
      tempCell.Value = false;
   }
}

Żadna z metod nie działa. Jest na to jakiś sposób?

Dodam, ze jeśli podepnę pod jakiś przycisk metodę ze zmiana stanu to bez problemu programowo da się zmienić stan. Natomiast drugi sposób wyrzuca błąd:

An unhandled exception of type 'System.StackOverflowException' occurred in System.Data.dll

EDIT:

Poniższa pętla:

for (int i = 0; i < dataGridView1.RowCount; i++)
{
            dataGridView1.Rows[i].Cells[0].Value = true;
            uwagiTB.Text += dataGridView1.Rows[i].Cells[0].Value + Environment.NewLine;
}

przypisze elementom wartości 'true' jednak checkbox'y nie zostaną odświeżone.