提交正在修改的单元格
有些朋友可能在DataGridView中修改了数据,但没有使该单元格失去焦点,保存时不会系统不会认为这条记录被修改.
以下代码可以实现提交当前单元格的修改.
背景:使用MDI窗体,点击保存时,检查子窗体包含哪能些更改未递交.
不过,建议使用bindingSource进行绑定,将更简单.
public virtual void Save() //所有子窗体从此类中继承,并且需先执行base.Save()
{
//使当前正在编辑的单元格取消编辑状态
GridEndEdit(this);
}
//此方法用于寻找当前被编辑的单元格,递交更改
private void GridEndEdit(Control control)
{
foreach (Control cl in control.Controls)
{
if (cl.ToString() == "System.Windows.Forms.DataGridView")
{
DataGridView view = (DataGridView)cl;
if (view.CurrentCell!=null)
{
if (view.CurrentCell.IsInEditMode)
{
view.EndEdit();
this.BindingContext[view.DataSource].EndCurrentEdit();
return;
}
}
}
if (cl.Controls.Count > 0)
GridEndEdit(cl);
}
}
以下代码可以实现提交当前单元格的修改.
背景:使用MDI窗体,点击保存时,检查子窗体包含哪能些更改未递交.
不过,建议使用bindingSource进行绑定,将更简单.
public virtual void Save() //所有子窗体从此类中继承,并且需先执行base.Save()
{
//使当前正在编辑的单元格取消编辑状态
GridEndEdit(this);
}
//此方法用于寻找当前被编辑的单元格,递交更改
private void GridEndEdit(Control control)
{
foreach (Control cl in control.Controls)
{
if (cl.ToString() == "System.Windows.Forms.DataGridView")
{
DataGridView view = (DataGridView)cl;
if (view.CurrentCell!=null)
{
if (view.CurrentCell.IsInEditMode)
{
view.EndEdit();
this.BindingContext[view.DataSource].EndCurrentEdit();
return;
}
}
}
if (cl.Controls.Count > 0)
GridEndEdit(cl);
}
}