СообЧа > База Знаний > Программирование > .NET

Вопрос

Зачем нужны методы BegineEdit, EndEdit, NewRow, AcceptChanges, RejectChanges?

Ответ

Решил заглянуть в MSDN, чтобы почитать об этом… И обнаружил, что это вообще методы разных классов: BeginEdit и EndEdit — методы DataRow, а AcceptChanges и GetChanges — методы DataSet'а…

Метод GetChanges позволяет получить копии всех измененных записей (измененных после последнего вызова метода AcceptChanges) из DataTable в отдельную DataTable.

Насчет BeginEdit и EndEdit:

Use the BeginEdit method to put a DataRow into edit mode. In this mode, events are temporarily suspended allowing the user to make multiple changes to more than one row without triggering validation rules. For example, if you need to ensure that the value of the column for a total amount is equal to the values for the debit and credit columns in a row, you can put each of the rows into edit mode to suspend the validation of the row values until the user attempts to commit the values.

Примерный перевод: BeginEdit используется для перевода DataRow в состояние редактирования. В этом режиме события временно приостанавливаются, позволяя юзеру произвести несколько изменений без запуска проверки правил.

То есть, я так понимаю, если в DataSet определены какие-нть ключи, например, UniqueConstraint, то после изменения каждой записи врубается проверка соответствтвия полей правила ключа (например, Unique проверяет значение поля на уникальность). Если же нам надо изменить сразу пачку записей, то будут сильные тормоза. Поэтому придумана такая система. Сначала вызываеи BeginEdit для изменяемых записей, делаем что хотим с записями. Потом либо вызываем для записей EndEdit, либо вызываем метод AcceptChanges датасета (он сам вызовет EndEdit у строк).



Copyright © 2000-2004 Сообщество Чайников
Контактная информация