首页 文章

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

提问于
浏览
0

我有一个任务绑定两个DataGridView 's, main problem I can'吨看到我将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 .

虽然解释得恰到好处,但我希望我已经成功了 .

谢谢 .

EDIT

通过在类级别初始化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 Update方法 .

案件结案 .

1 回答

  • 0

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

相关问题