我有Datagridview,有4列用于复选框和5行(如复选框矩阵)。当用户检查他想要的复选框并按下“保存”按钮时,除非用户转到任何其他单元格(不改变任何内容,只是从单元格移动),否则不会更改最后编辑的复选框。 我不知道如何解决这个问题。
for (int i = 0; i < dgv_permissions.Rows.Count; i++)
{
paramList.Clear();
paramList.Add("uGrpPermissionModule", dgv_permissions.Rows[i].Cells[0].Value.ToString());
paramList.Add("uGrpRead", Convert.ToBoolean(dgv_permissions.Rows[i].Cells[1].Value.ToString()));
paramList.Add("uGrpNew", Convert.ToBoolean(dgv_permissions.Rows[i].Cells[2].Value.ToString()));
paramList.Add("uGrpUpdate", Convert.ToBoolean(dgv_permissions.Rows[i].Cells[3].Value.ToString()));
paramList.Add("uGrpDelete", Convert.ToBoolean(dgv_permissions.Rows[i].Cells[4].Value.ToString()));
paramList.Add("uGrpReports", Convert.ToBoolean(dgv_permissions.Rows[i].Cells[5].Value.ToString()));
try
{
retval = DBFucntions.doWriteCommand(sqlStr, paramList);
}
catch (Exception ex)
{
MessageBox.Show("Error");
}
}
答案 0 :(得分:2)
我认为这与使用复选框列没有真正适当的编辑控件这一事实有关。每当我遇到此问题时,我都会对CurrentCellDirtyStateChanged
上的DataGridView
事件使用以下事件处理程序:
private void DataGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (this.mDataGridView.IsCurrentCellDirty &&
(this.mDataGridView.CurrentCell.OwningColumn == /* check box column */))
{
this.mDataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}