Событие _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