Каков правильный порядок обработки вставки из элемента управления с привязкой к данным с использованием BindingSource , DataSet и TableAdapter ? Это вызывает у меня вечное замешательство.
У меня есть форма, которая используется для добавления новой строки.
Прежде чем показывать форму, я звоню:
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 ().