У меня есть dataGridView, который заполняется данными из базы данных EF:
efcontext.Users.Load();
dataGridView1.DataSource = ctx.Users.Local.ToBindingList();
Затем я добавляю к нему столбец
DataGridViewCheckBoxColumn newCol = new DataGridViewCheckBoxColumn();
DataGridViewCheckBoxCell cell = new DataGridViewCheckBoxCell();
cell.IndeterminateValue = false;
cell.TrueValue = true;
cell.FalseValue = false;
newCol.CellTemplate = cell;
newCol.HeaderText = "Select";
newCol.Name = "selected";
newCol.Visible = true;
newCol.ValueType = typeof(bool);
dataGridView1.Columns.Add(newCol);
Позже в программе я хочу выполнить итерациюкаждая строка и пометить некоторые строки как выбранные. Я делаю это с помощью этого кода:
for (int i = 0; i < dataGridView1.RowCount; i++)
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)dataGridView1.Rows[i].Cells["selected"];
if(something)
{
chk.Value = true;
}
else
{
chk.Value = false;
}
Но это ничего не меняет. Я попытался обновить dataGridView позже, а также вместо true
я использовал chk.TrueValue
, но это также не сработало. Как я могу пометить флажки как истинные? Это не просто проблема с визуальной стороной отмеченного флажка, поскольку после извлечения этих строк все они ложные, поэтому проблема связана как со значением этой ячейки, так и с ее графическим представлением.
ОБНОВЛЕНИЕ 1: Мне не нужно менять сущности в EF, только значения ячеек в dataGridView.