2009-07-22 2 views
3

Неужели кто-то сталкивается с ds.hasChanges(), будучи ложным, несмотря на то, что ds явно имеет изменения, пока вы проверяете его в точке останова? Я смотрел на него какое-то время, и я не могу видеть, что это неправильно .... NET DataSet.HasChanges неверно false

// connectionstring and command has been set 
DataSet ds = new DataSet(); 
BindingSource myBindingSource = new BindingSource(); 
SqlDataAdapter dataAdapter1 = new SqlDataAdapter(); 
dataAdapter1.Fill(ds, "Data"); 
myBindingSource.DataSource = ds.Tables["Data"]; 

// then changes made to the datatable on a windows form using bindingnavigator 
ds.HasChanges(DataRowState.Modified); // is false 

Теперь, когда я поставил точку останова после строки с HasChanges и использовать DataSet Visualizer я могу видеть, что DataSet фактически изменился, но HasChanges все еще возвращает false.

Я уверен, что мне не хватает очевидного ... может ли кто-нибудь увидеть, что я делаю неправильно?

Приветствия

+0

Какие изменения внесены в данные - т. Е. Строки определенно обновляются, а не добавляются? Кроме того, dt.Tables ["Data"]. HasChanges возвращает true? – AdaTheDev

ответ

8

Попробуйте называть EndCurrentEdit() на BindingContext первый:

DataTable dt = ds.Tables["Data"]; 
this.BindingContext[dt].EndCurrentEdit(); 

if(ds.HasChanges(DataRowState.Modified)) 
{ 
    // do your stuff here 
} 

попробовать также вызывая myBindingSource.EndEdit(), что будет толкать любые не-поручены данные в DataTable.

+1

Блестящий! Огромное спасибо. +1 –

0

Форма для Windows не делает (вызов .AcceptChanges) на DataSet это?

Редактировать: Хорошо, не так. Следующие вещи, за мой комментарий:
1) есть записи, которые были изменены, а не просто добавлены/удалены? Что возвращает DataSet.HasChanges()?
2) Что возвращает функция GetChanges() для конкретной информации, которая содержится в наборе данных?

+0

Нет. Это была моя первая мысль ... –

+0

1. Записи были обновлены не удалены или не добавлены 2. возвращает false 3. нет hasChanges для данных, но если вы имеете в виду getchanges, который также возвращает null –

+0

Извините, да, я имел в виду GetChanges. Исправлено мое редактирование. – AdaTheDev

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