Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Свойство DataRowVersion




Свойство RowState

Свойство RowState применяется для программной идентификации множества всех строк таблицы, которые изменили свое первоначальное значение, были вставлены и т.п. Это свойство может принимать любое значение из перечисления DataRowState:

Таблица 1.1. Перечисление DataRowState

Значение Назначение
Added Строка была добавлена в DataRowCollection, a AcceptChanges() еще не был вызван
Deleted Строка была помечена для удаления с помощью метода Delete() класса DataRow, a AcceptChanges() еще не был вызван
Detached Строка была создана, но не включена ни в какой DataRowCollection. Объект DataRow находится в этом состоянии после его создания, но до занесения в какую-либо коллекцию, либо после исключения из коллекции
Modified Строка была изменена, a AcceptChanges() еще не был вызван
Unchanged Строка не была изменена после последнего вызова AcceptChanges()

При программной работе со строками объекта DataTable значения в свойство RowState заносятся автоматически. Объект ADO.NET DataRow вполне разумно отслеживает свое состояние. Поэтому владеющий этим объектом объект DataTable может определить добавленные, измененные или удаленные строки. Это очень важная возможность DataSet, потому что когда наступит время послать информацию в хранилище данных, будут отправлены только измененные данные.

Кроме отслеживания текущего состояния строк с помощью свойства RowState, объект DataRow отслеживает три возможные версии содержащихся в нем данных с помощью свойства DataRowVersion. При первоначальном создании объект DataRow содержит лишь одну копию данных, которая считается "текущей версией". Но при программной работе с объектом DataRow (с помощью вызовов различных методов) появляются дополнительные версии данных. Конкретнее, свойство DataRowVersion может содержать любое значение соответствующего перечисления DataRowVersion:

Таблица 1.2. Перечисление DataRowVersion

Значение Назначение
Current Представляет текущее значение строки, даже после выполнения изменений
Default Стандартный вариант DataRowState. Если значение DataRowState равно Added, Modified или Deleted, то стандартной версией является Current. Для значения DataRowState, равного Detached, стандартной версией является Proposed
Original Представляет значение, первоначально вставленное в DataRow, или значение при последнем вызове AcceptChanges()
Proposed Значение строки, редактируемой в настоящий момент с помощью вызова BeginEdit()

Как показано в таблице, значение свойства DataRowVersion в большинстве случаев зависит от значения свойства DataRowState. А как было сказано ранее, значение свойства DataRowState автоматически изменяется при вызовах различных методов объекта DataRow (а в некоторых случаях DataTable). Ниже представлена схема влияния этих методов на значение свойства DataRowVersion произвольной строки:

- При изменении значения строки, после вызова метода DataRow.BeginEdit(), становятся доступны значения Current и Proposed.

- При вызове метода DataRow.CancelEdit() значение Proposed удаляется.

- После вызова DataRow.EndEdit() значение Proposed меняется на Current.

- После вызова метода DataRow.AcceptChanges() значение Original становится равным значению Current. То же самое происходит и при вызове DataTable.AcceptChanges().

- После вызова DataRow.RejectChanges() значение Proposed отбрасывается, и версия становится равной Current.

Да, все это несколько запутанно — особенно из-за того, что в любой данный момент времени DataRow может иметь, а может и не иметь все версии (при попытке получения версии строки, которая в данный момент не отслеживается, возникнут исключения времени выполнения). Но поскольку DataRow отслеживает три копии данных, то, несмотря на эту сложность, можно без особого труда создать пользовательский интерфейс, который позволяет конечному пользователю изменить значения, потом передумать и отказаться от этих изменений или зафиксировать их, чтобы они хранились постоянно.




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 495; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.038 сек.