Каков правильный порядок обработки вставки из элемента управления, связанного с данными, с использованием BindingSource, DataSet и TableAdapter? Это вызывает у меня вечную путаницу.Ошибка привязки ADO.NET - BindingSource.EndEdit() изменяет текущую позицию
У меня есть форма, которая используется для добавления новой строки.
Перед показом формы, я называю:
bindingSource.AddNew();
bindingSource.MoveLast();
После Спасите, я называю:
bindingSource.EndEdit();
tableAdapter.Insert([the row given to me as bindingSource.Current]);
Проблема заключается в том, что
- , если я не называю
EndEdit()
, изменения TextBox с текущим фокусом не сохраняются - , если я вызываю
EndEdit()
, текущий член BindingSource больше не указывает на строку, которую я только что добавил.
Я могу, конечно, вызов Insert()
со значениями из формы в отличие от DataTable, который был обновлен в BindingSource, но что поражения цели с помощью привязки данных. Что мне нужно сделать, чтобы заставить это работать?
Я понимаю, что я мог бы позвонить TableAdapter.Update()
на весь DataSet, так как я использую строго типизированный DataSet. У меня есть внешние ключи в таблице, которые не привязаны к базе данных, и что я добавляю их до того, как я назову Insert().