【问题标题】:(Closed) BindingSource detecting changes issue(已关闭)BindingSource 检测更改问题
【发布时间】:2013-12-15 00:04:22
【问题描述】:

我的任务是绑定两个 DataGridView,主要问题是当我将 BindingSource 数据源转换为 DataSet 时,我看不到更改em>(我需要这个用于 SqlDataAdapter)。

我可以通过删除 db 表内容来解决这个问题,但这不适合我。

我可以捕捉到这些事件,但我需要在处理表单时更新数据库。

var bs = (BindingSource)dataGridView1.DataSource;
var set = (DataSet)bs.DataSource; //here DataSet HasChanges() method always returns true

当我在 SqlDataAdapter 中使用 DataSet 中的表时,Update() 和 Fill() 方法会为我执行插入操作,因为值始终显示为新值。 p>

虽然解释得很对,但我希望我成功了。

谢谢。

编辑

通过在类级别初始化 DataSet 并添加 AcceptChanges 方法来修复它。 还从 BindingSource 中删除了强制转换。

DataSet的初始化代码sn-p:

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 更新方法。

结案。

【问题讨论】:

    标签: c# datagridview datasource bindingsource sqldataadapter


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多