我在winform上有datagridview。它必然来自以下代码:
PoolEntities db = new PoolEntities();
var Result = db.General_Pool_Detail.Where(g => g.Pool_Name == cbxGLType.SelectedValue && g.Mapped_Date == dt).Select(s=>
new { Selected = true, s.Gen_Pool_ID, s.GSL_Code, s.Amount }).ToList();
dgvGeneralPoolData.DataSource = Result;
代码完美无缺。但是当我取消选中datagridview上的复选框时,它不起作用。
在datagirdview事件中,我编写了以下代码:
private void dgvGeneralPoolData_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dgvGeneralPoolData.Rows[e.RowIndex].Cells[0].Selected)
{
Boolean IsChecked = (Boolean) dgvGeneralPoolData.Rows[e.RowIndex].Cells[0].Value;
if (IsChecked)
{
dgvGeneralPoolData.Rows[e.RowIndex].Cells[0].Value = false;
}
}
}
另外,我想将datagridview中所做的更改保存到数据库中。 请帮忙。
答案 0 :(得分:0)
EditMode属性
答案 1 :(得分:0)
是否甚至点击了您的点击事件?调试时它究竟在哪里破坏?如果可以的话,尝试调试并提供更多信息。
1)调试并确保事件处理程序确实有效。有时当你复制粘贴代码时,事件处理程序没有被设计者注册,所以尝试删除CellClick并在网格视图上再次输入代码,当你添加=符号它应该给你一个选项来创建ClickCell方法为您服务。在点击事件中应该是这样的。
if (e.RowIndex != -1)
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)dgvGeneralPoolData.CurrentRow.Cells["ColumnNumberHere"];
if (chk.Value == null || chk.Value = false)
{
chk.Value = true;
}
else
{
chk.Value = false
}
}
2)确保它在InitializeComponent()
下this.dgvGeneralPoolData.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvGeneralPoolData_CellContentClick);