2013-11-28 2 views
0

меня была задача, чтобы связать два 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 Метод обновления.

Корпус закрыт.

ответ

0

Я нашел ответ на свой вопрос, описание в редактированном вопросе. Спасибо.

Смежные вопросы