DataTable.RejectChanges () и обновление элементов управления текстового поля формы - PullRequest
0 голосов
/ 08 апреля 2009

Я работаю над пониманием фреймворка в C #. У меня есть форма с простыми кнопками добавления / редактирования, сохранения / отмены (и выхода) на форме. Форма имеет сетку и привязанную к ней таблицу данных (таблица данных - это поле формы для целей области действия, которое остается на время действия формы).

Также в форме есть 3 простых элемента управления текстовым полем, привязанных к соответствующим столбцам в DataTable. Когда я прокручиваю сетку, детали текстового поля автоматически обновляются ... идеально.

У меня нормально работает добавление / отмена координации, но не удается изменить / отменить. Сбой в отношении следующего.

Я запускаю форму, сетка отображает 3 строки (столбец 1 - это простое «Описание»). Первая строка имеет значение Test (поэтому в соответствующей форме отображается соответствующий связанный элемент управления текстового поля). Я нажимаю кнопку редактирования и теперь могу изменить отдельное текстовое поле (не сетку данных) и изменить его на Test changed value.

Итак, теперь я нажимаю кнопку «Отмена» и надеюсь на следующее ... Сетка НЕ ​​обновляется с новым значением, а отдельный элемент управления textbox возвращается к своему исходному значению Test.

В кнопке Отмена я выдаю MyDataTable.RejectChanges(), и сетка правильно сохраняет исходное значение Test, но элемент управления textbox сохраняет содержимое Test changed value. Когда у меня тот же самый вызов RejectChanges() во время комбинации добавления / отмены, все это прекрасно работает.

Чтобы смоделировать подобное во время добавления / отмены, я явно навязываю сетку последней допустимой строке таблицы данных, которая, в свою очередь, обновляет текстовые поля ... Очевидно, что-то в процессе вызова / перезагрузки MyDataGridView.CurrentRow срабатывание вызывает то, чего я не вижу. Поскольку это РЕДАКТИРОВАТЬ, я не удаляю строку из таблицы (временно из «Добавить»), а затем отклоняю (что удаляет), и форсирует изменение строки через MyDataGridView.CurrentCell = [0, LastDataRowInDataTable].

Любые мысли были бы великолепны.

1 Ответ

2 голосов
/ 27 июля 2013

Подобная проблема возникла у меня при попытке обновить два элемента управления (Datetimepicker и Textbox) после вызова RejectChanges. Это было решено путем вызова метода ResetCurrentItem() элемента управления BindingSource.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...