我想知道是否有任何条件来检查是否编辑了来自单元格的值。 我可以通过其他方式(使用If value == value)bla bla ...但我需要写很多来比较值..我还需要另一种方法。
由于
答案 0 :(得分:0)
如果您正在使用自定义对象/ 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);
}
}
答案 1 :(得分:0)
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级别。如果您的数据也被代码更改,您将需要不同的方法。