我有一个任务绑定两个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 回答
我找到了我的问题的答案,描述是在编辑的问题 . 谢谢 .