我有一个绑定两个 DataGridView 的任务,主要问题当我将 BindingSource 数据源转换为 DataSet时,我无法看到更改(我需要这个用于 SqlDataAdapter )。
我可以通过删除db表内容来解决这个问题,但这不适合我。
我可以捕获这些事件,但我需要在处理表单时更新DB。
var bs = (BindingSource)dataGridView1.DataSource;
var set = (DataSet)bs.DataSource; //here DataSet HasChanges() method always returns true
当我在 SqlDataAdapter Update()和Fill()方法中使用 DataSet 中的表时,为我执行Insert,因为值始终显示为new。
虽然说得对,但我希望我已经成功了。
感谢。
修改
通过在类级别初始化 DataSet 并添加AcceptChanges方法来解决此问题。 还从 BindingSource 中删除了转换。
用于初始化 DataSet 的代码段:
dataSetT = new DataSet();
dataSetT.ReadXmlSchema(xmlSchemeFile);
dataSetT.ReadXml(populateDataSet == null ? xmlSchemeFile : xmlDataFile, XmlReadMode.IgnoreSchema);
var autoSource = new BindingSource();
var repairSource = new BindingSource();
autoSource.DataSource = dataSetT;
autoSource.DataMember = "Auto";
repairSource.DataSource = autoSource;
repairSource.DataMember = "VIN_FK";
dataGridView1.AutoGenerateColumns = true;
dataGridView2.AutoGenerateColumns = true;
dataGridView1.DataSource = autoSource;
dataGridView2.DataSource = repairSource;
dataSetT.AcceptChanges();
现在使用AcceptChanges方法dataSetT.HasChanges()返回一个实际值。然后我使用 DataAdapter 更新方法。
案件结案。
答案 0 :(得分:0)
我找到了我的问题的答案,描述在编辑问题中。 感谢。