(已关闭)BindingSource检测更改问题

时间:2013-11-28 21:11:01

标签: c# datagridview datasource bindingsource sqldataadapter

我有一个绑定两个 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 更新方法。

案件结案。

1 个答案:

答案 0 :(得分:0)

我找到了我的问题的答案,描述在编辑问题中。 感谢。