用于检查网格视图单元格中的值是否已编辑的条件
本文关键字:是否 编辑 条件 检查 网格 视图 单元格 用于 | 更新日期: 2023-09-27 18:27:05
我想知道是否有任何条件可以检查是否编辑了单元格中的值。我可以用其他方式(如果值==值)blabla。。但我需要写很多东西来比较这些值。。我需要另一种方式。
感谢
如果您使用的是带有对象数据源的自定义对象/List绑定。你可以定义一个基类,继承它&像一样将您的对象标记为脏
public class ObjectBase
{
private bool _isDirty;
private bool _isNew = true;
protected void MarkDirty()
{
_isDirty = true;
}
protected void MarkAsNew()
{
_isNew = true;
}
public bool IsDirty
{
get { return _isDirty; }
}
}
然后在您的对象类中,您将继承这个类似的基类
public class myClass:ObjectBase
{
public int Id {get; set;}
public string Name {get; set;}
}
当你更新你的对象时,在表示层中将它们标记为脏的,然后在业务层检查它们是否脏,如果是,更新其他返回"没有更新的更改"
public static bool UpdateItem(Employee myEmployee)
{
if(myEmployee.IsDirty)
{
return myEmployeeDB.UpdateItem(myEmployee);
}
}
DataGridViewCell不跟踪更改。如果您需要知道只有一个单元格的Value发生了更改,请使用CellValueChanged事件并在那里完成您的工作。如果你需要知道哪些单元格被修改了,这样你就可以枚举它们并做必要的事情,试试这个:
HashSet<DataGridViewCell> changedCells = new HashSet<DataGridViewCell>();
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DataGridView dgv = sender as DataGridView;
if (!changedCells.Contains(dgv[e.ColumnIndex, e.RowIndex]))
{
changedCells.Add(dgv[e.ColumnIndex, e.RowIndex]);
}
}
不要忘记挂接DataGridView的CellValueChanged事件。当您需要更改单元格的列表时,请执行以下操作:
foreach (DataGridViewCell cell in changedCells)
{
// Your work here
}
这仅适用于UI级别。如果您的数据也被代码更改,您将需要不同的方法。