У меня есть DataGridView, который загружает данные из DataTable вместе с несвязанным столбцом DataGridViewCheckBoxCells.Строки в DataGridView сравниваются с отдельной таблицей DataTable со значениями, сохраненными пользователем, и, если есть совпадение, флажок для этой строки должен быть установлен.
Вот код, который сравнивает значения и устанавливаетзначение флажка 'true':
foreach (int j in selectedObjectives)
{
foreach (DataGridViewRow r in dgvObjectives.Rows)
{
if (j == Convert.ToInt32(r.Cells["ObjectiveID"].Value))
{
dgvObjectives.CurrentCell = r.Cells["Select"];
((DataGridViewCheckBoxCell)r.Cells["Select"]).Value = true;
//dgvObjectives.InvalidateCell(r.Cells["Select"]);
//dgvObjectives.EndEdit();
//dgvObjectives.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
if (Convert.ToInt32(r.Cells["ObjectiveID"].Value) == selectedIndex)
{
r.Selected = true;
}
}
}
Когда я вызываю метод для выполнения этого действия во время загрузки формы private void WQMDrill_Load(object sender, EventArgs e)
, значения устанавливаются правильно, но флажки не проверяются.Однако при вызове после завершения загрузки формы код работает отлично.К сожалению для меня, мне абсолютно необходимо проверить их во время процесса загрузки.
Я надеюсь, что со своей проблемой я разобрался, любая помощь по этому вопросу будет принята с благодарностью.Как вы можете видеть, я пытался сделать недействительной только ячейку, а также весь элемент управления DataGridView.У меня также есть
private void dgvObjectives_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (this.dgvObjectives.CurrentCell.ColumnIndex == 0)
{
this.dgvObjectives.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
, который не срабатывает в это время.Спасибо.