Поделиться через


Событие _DataDOMEventSink_Event.OnBeforeChange

Происходит после выполнения изменений в базовом XML-документе формы, но до их принятия.

Пространство имен: Microsoft.Office.Interop.InfoPath.SemiTrust
Сборка: Microsoft.Office.Interop.InfoPath.SemiTrust (в microsoft.office.interop.infopath.semitrust.dll)

Синтаксис

'Декларация
Event OnBeforeChange As _DataDOMEventSink_OnBeforeChangeEventHandler
'Применение
Dim instance As _DataDOMEventSink_Event
Dim handler As _DataDOMEventSink_OnBeforeChangeEventHandler

AddHandler instance.OnBeforeChange, handler
event _DataDOMEventSink_OnBeforeChangeEventHandler OnBeforeChange

Заметки

Этот обработчик событий позволяет пользователям отменять операцию DataDOM.

В ходе события OnBeforeChange базовому XML-документу формы назначается режим "только чтение". Если свойству ReturnStatus объекта DataDOMEventObject задано значение false, Microsoft Office InfoPath 2007 отменяет сделанные изменения, и отображается окно с сообщением для пользователя. Если ошибка возникает в коде для события OnBeforeChange, InfoPath отклоняет изменения и восстанавливает данные в их предыдущем состоянии.

ЗаметкаЗаметка

Не рекомендуется переключать представления в ходе события OnBeforeChange. Поскольку изменения еще не приняты, при переключении на другое представление может возникнуть ошибка.

ЗаметкаЗаметка

В ряде случаев события, связанные с изменениями в базовом XML-документе формы, могут происходить не однажды. Например, при изменении существующих данных выполняются операции вставки и удаления.

ЗаметкаЗаметка

Если произошла ошибка проверки события OnBeforeChange, документ загружен не будет. Блок try/catch в событии OnLoad можно использовать, чтобы перехватить эту ошибку проверки и продолжить загрузку документа вопреки ее.

Пример

В следующем примере обработчик событий OnBeforeChange служит для проверки данных в поле. Если данные недопустимы, свойство ReturnStatus объекта DataDOMEventObject используется для отмены этих изменений.

[InfoPathEventHandler(MatchPath="/Customers/Customer/RepVisitDt", EventType=InfoPathEventType.OnBeforeChange)]
public void RepVisitDt_OnBeforeChange(DataDOMEvent e)
{
 IXMLDOMNode phone = thisXDocument.DOM.selectSingleNode    (@"/Customers/CustomerInfo/ContactDates/PhoneContactDt");
 if (phone.text == "")
 {
  e.ReturnMessage = "The Phone Contact Start date must be set prior to the Representative Visit date.";
  e.ReturnStatus = false;
  return;
 }
 // If the data is valid, eventObj.ReturnStatus = true.
 e.ReturnStatus = true;
 return;
}

См. также

Ссылка

Интерфейс _DataDOMEventSink_Event
Члены _DataDOMEventSink_Event
Пространство имен Microsoft.Office.Interop.InfoPath.SemiTrust