Хорошо, я прочитал ваш пост пару раз, хотя я не могу помочь вам напрямую с вашей проблемой. В любом случае, я попытаюсь, что вы хотите, чтобы при внесении изменений он не обновлялся сразу, а сохранял информацию в списке, а когда вы нажимаете кнопку, сохраняете обновления?
Тогда вам нужно составить список датаров, и каждый раз, когда строка изменяется, добавляйте этот элемент в список, таким образом, обновления не производятся напрямую, а только когда вы нажимаете кнопку. (Это также намного лучше для повышения производительности.)
Так что вместо кода
DataRow dr = e.Row;
if (dr.RowState == DataRowState.Modified)
{
tblObjectTableAdapter.Update(dr);
}
U должно составить
DataRow dr = e.Row;
if (dr.RowState == DataRowState.Modified)
{
DatarowLst.Add(dr);
}
ButtonSave_Click(object sender, eventargs e)
{
foreach (DataRow d in DatarowLst)
{
tblObjectTableAdapter.Update(d);
}
}
EDIT:
Хорошо, извините за недопонимание. Теперь я понимаю вашу проблему и изучил проблему.
Я нашел интересную информацию об адаптерах и таблицах данных. Кажется, что Адаптер выполняет проверку строки за строкой, чтобы получить информацию о внесенных изменениях (т. Е. Нужна ли ему команда обновления или удаления?). Таким образом, мой GUESS состоит в том, что это инициирует обновление, и поэтому снова вызывает ваше событие и запуск метода рекурсивно.
Информация найдена в заметке на: Этот сайт с MSDN
Они дают ссылку на этот сайт для получения дополнительной информации. Может быть, вы найдете там свой ответ.
Что касается решения вашей проблемы, то, кажется, вы можете пропустить ваше событие и просто вызвать команду обновления. Я НЕ уверен в этом, потому что у меня нет времени, чтобы проверить это, и у меня мало опыта по этому вопросу.
Ну, надеюсь, это поможет тебе немного дальше ...