У меня есть набор данных с несколькими таблицами. В частности, одна таблица содержит одну запись. Я добавляю еще одну запись в эту таблицу данных и использую метод Dataset.Copy () для копирования всего объекта набора данных в другой экземпляр.
Dataset2 = DirectCast(Dataset1.Copy(), dsApplication)
Однако новая копия набора данных, возвращенная этим методом, неверна. Новая строка есть и имеет RowState «Добавлен», но значение пустое (это строковое поле). Набор данных сохраняется в базе данных с пустым значением.
Теперь у меня есть два ряда. Оригинальный и чистый. Если я заменил пустой текст на текст и снова запустил операцию, то в исходном наборе данных строка будет отображаться как текстовая, но с RowState, равным «Без изменений», а второй набор данных снова будет пустым для этой строки.
У кого-нибудь есть объяснение этому поведению? Почему не копируется значение второй строки в операции Dataset.Copy ()? Почему RowState второй строки не отображается как измененный после добавления текста?
Редактировать: исходный набор данных изменяется с помощью сетки данных. Если после того, как я введу текст в ячейку таблицы данных, я нажму на другую строку перед началом операции копирования, она будет работать нормально. Если я не нажму на другую строку, то произойдет сбой. Прежде чем начать операцию копирования, я вызываю метод datagridview.endedit (). Это все еще странно, потому что даже без нажатия на другую ячейку, когда я отлаживаю код, исходный набор данных всегда показывает правильное значение непосредственно перед операцией копирования, поэтому я не понимаю, почему представление данных вообще оказывает какое-либо влияние.
Edit # 2: Во время отладки я заметил, что если я изменю первое значение в gridview, RowState изменится на Modified, как и ожидалось. Однако для любой другой строки RowState остается неизменным, несмотря на фактическое изменение значения.