C# .NET DataSet.HasChanges错误地为false
是否有人发现ds.hasChanges()为false,尽管您在断点处检查ds时,ds明显有更改? 我已经看了很长一段时间了,我看不出有什么不对C# .NET DataSet.HasChanges错误地为false,c#,data-binding,dataadapter,C#,Data Binding,Dataadapter,是否有人发现ds.hasChanges()为false,尽管您在断点处检查ds时,ds明显有更改? 我已经看了很长一段时间了,我看不出有什么不对 // connectionstring and command has been set DataSet ds = new DataSet(); BindingSource myBindingSource = new BindingSource(); SqlDataAdapter dataAdapter1 = new SqlDataAdapter();
// connectionstring and command has been set
DataSet ds = new DataSet();
BindingSource myBindingSource = new BindingSource();
SqlDataAdapter dataAdapter1 = new SqlDataAdapter();
dataAdapter1.Fill(ds, "Data");
myBindingSource.DataSource = ds.Tables["Data"];
// then changes made to the datatable on a windows form using bindingnavigator
ds.HasChanges(DataRowState.Modified); // is false
现在,当我使用HasChanges在行之后设置断点并使用DataSet Visualizer时,我可以看到数据集实际上已经更改,但HasChanges仍然返回false
我肯定我错过了显而易见的。。。有人能看出我做错了什么吗
干杯Windows窗体没有对数据集执行.AcceptChanges()调用,是吗 编辑: 好吧,所以不是那样。根据我的评论,接下来的事情:
1) 记录是否已被修改,而不仅仅是添加/删除?DataSet.HasChanges()返回什么?
2) GetChanges()为数据集中的特定数据表返回什么?首先尝试在BindingContext上调用EndCurrentEdit():
DataTable dt = ds.Tables["Data"];
this.BindingContext[dt].EndCurrentEdit();
if(ds.HasChanges(DataRowState.Modified))
{
// do your stuff here
}
还可以尝试调用
myBindingSource.EndEdit()
,将任何未提交的数据推送到DataTable
对DataTable做了哪些更改,即行是否确实正在更新,而不是添加?另外,dt.Tables[“Data”].HasChanges是否返回true?1。记录已更新,未删除或添加2。返回false 3。datatables没有hasChanges,但如果您是指返回null作为wellBrilliant的getchanges!非常感谢+1.