编辑数据源后无法以编程方式检查DGV中的复选框列?

时间:2012-02-16 06:37:10

标签: c# winforms

我的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; 
           }
     }
}

2 个答案:

答案 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匹配,如果匹配,找到行中的复选框控件并将其标记为已选中。

希望这有帮助。