如果唯一的变化是一个新行,有没有办法阻止 myDataSet.HasChanges() 返回 true ?
Is there a way to stop myDataSet.HasChanges() returning true if the only change is a new row?
我的 Form
上有一个 Button
,单击它会调用 myBindingSource.AddNew()
。与在该新行上设置值相关的控件随后变为可见。
在 Form
的关闭事件上我调用 myDataSet.HasChanges()
如果它 returns True
,我提示用户是否要保存更改他们做到了。
在用户单击添加新行但随后关闭表单(无论出于何种原因)而未设置任何值的情况下,myDataSet.HasChanges()
显然会 return True
因为添加了新行。
我想要的是一种实现方式 return False
如果唯一的变化是一个新行。
我试过在 myBindingSource.AddNew()
之后立即调用 myBindingSource.EndEdit()
然后 myDataSet.AcceptChanges
但 myDataSet.HasChanges()
仍然 returns True
.
我认为通过调用 myDataSet.AcceptChanges()
它基本上可以清除历史记录,并且只有在该点之后所做的更改才会被拾取。
或者如果有更好的方法,我想听听。
我热衷于在提示保存时只一次保存回 DataBase
的想法,而不是在 Button.Click
上插入新行并在每个值上更新该行改变。
比我的评论更具体:
If myDataSet.HasChanges(DataRowState.Deleted Or DataRowState.Modified) Then
我的 Form
上有一个 Button
,单击它会调用 myBindingSource.AddNew()
。与在该新行上设置值相关的控件随后变为可见。
在 Form
的关闭事件上我调用 myDataSet.HasChanges()
如果它 returns True
,我提示用户是否要保存更改他们做到了。
在用户单击添加新行但随后关闭表单(无论出于何种原因)而未设置任何值的情况下,myDataSet.HasChanges()
显然会 return True
因为添加了新行。
我想要的是一种实现方式 return False
如果唯一的变化是一个新行。
我试过在 myBindingSource.AddNew()
之后立即调用 myBindingSource.EndEdit()
然后 myDataSet.AcceptChanges
但 myDataSet.HasChanges()
仍然 returns True
.
我认为通过调用 myDataSet.AcceptChanges()
它基本上可以清除历史记录,并且只有在该点之后所做的更改才会被拾取。
或者如果有更好的方法,我想听听。
我热衷于在提示保存时只一次保存回 DataBase
的想法,而不是在 Button.Click
上插入新行并在每个值上更新该行改变。
比我的评论更具体:
If myDataSet.HasChanges(DataRowState.Deleted Or DataRowState.Modified) Then