меня была задача, чтобы связать два DataGridView «с, главная проблема, я не могу увидеть изменения, когда я бросил BindingSource источник данных DataSet (мне это нужно для SqlDataAdapter).(Closed) BindingSource обнаружения изменений вопрос
Я могу обойти это, удалив содержимое таблицы db, но это не подходит для меня.
Я мог поймать эти события, но мне нужно обновить БД при утилизации формы.
var bs = (BindingSource)dataGridView1.DataSource;
var set = (DataSet)bs.DataSource; //here DataSet HasChanges() method always returns true
И когда я использую таблицы из DataSet в SqlDataAdapter Update() и Fill() методы сделать Insert для меня, потому что значения всегда отображаются как новые.
Это как бы объяснить это правильно, надеюсь, я преуспел.
Спасибо.
РЕДАКТИРОВАТЬ
Фиксированный его путем инициализации 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 Метод обновления.
Корпус закрыт.