我的DGV点击事件是通过数据表绑定的。每当选中复选框列时,它都会验证所选行并通过消息框向用户显示该条件。如果用户单击“是”,则编辑数据表中的“备注”列。我的问题是,我需要保留复选标记。它在AcceptChanges();
之后消失这是我尝试过的。
DialogResult OptScndary = MessageBox.Show("This employee's primary position is not required for the project but the secondary position is. Would you like to request this employee for his/her secondary position?", "Secondary Position", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (OptScndary == DialogResult.Yes)
{
DataRow[] Row = AvailableEmp_dataTable.Select("EmpID='" + Sel_EmpID + "'");
Row[0]["Remarks"] = "Secondary position requested";
AvailableEmp_dataTable.AcceptChanges();
RequestBtn.Enabled = true;
foreach (DataGridViewRow DGVRow in EmpInfoGrid.Rows)
{
if (DGVRow.Cells["EmpID"].Value.ToString().Equals(Sel_EmpID))
{
DGVRow.Cells[MarkColumn.Name].Value = true;
}
}
}
答案 0 :(得分:1)
创建已检查行的集合。保存ID并在DataGridViewRowAdding上添加一个过程(不确定确切名称)事件,以根据已检查行的集合更改复选框的值
答案 1 :(得分:0)
转到此链接。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx
每当我们重新绑定datagridview时都会触发rowdatabound事件。因此,当您选中该复选框时,只需收集已选中复选框的行。当用户选中一个复选框时,让我们处理你的逻辑,然后重新绑定datagridview和rowdatabound事件,将行与你在复选框检查事件期间收集的集合中存储的id匹配,如果匹配,找到行中的复选框控件并将其标记为已选中。
希望这有帮助。