_DataDOMEventSink_Event.OnBeforeChange Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит после выполнения изменений в базовом XML-документе формы, но до их принятия.
public:
event Microsoft::Office::Interop::InfoPath::SemiTrust::_DataDOMEventSink_OnBeforeChangeEventHandler ^ OnBeforeChange;
event Microsoft.Office.Interop.InfoPath.SemiTrust._DataDOMEventSink_OnBeforeChangeEventHandler OnBeforeChange;
member this.OnBeforeChange : Microsoft.Office.Interop.InfoPath.SemiTrust._DataDOMEventSink_OnBeforeChangeEventHandler
Event OnBeforeChange As _DataDOMEventSink_OnBeforeChangeEventHandler
Тип события
Примеры
В следующем примере обработчик событий OnBeforeChange служит для проверки данных в поле. Если данные недопустимы, ReturnStatus свойство DataDOMEventObject объекта используется для отклонения изменений.
[InfoPathEventHandler(MatchPath="/Customers/Customer/RepVisitDt", EventType=InfoPathEventType.<span class="label">OnBeforeChange</span>)]
public void RepVisitDt_<span class="label">OnBeforeChange</span>(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;
}
В следующем примере обработчик событий OnBeforeChange служит для проверки данных в поле. Если данные недопустимы, ReturnStatus свойство DataDOMEventObject объекта используется для отклонения изменений.
[InfoPathEventHandler(MatchPath="/Customers/Customer/RepVisitDt", EventType=InfoPathEventType.<span class="label">OnBeforeChange</span>)]
public void RepVisitDt_<span class="label">OnBeforeChange</span>(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;
}
Комментарии
Этот обработчик событий позволяет пользователям отменять операцию DataDOM.
В ходе события OnBeforeChange базовому XML-документу формы назначается режим "только чтение". Если свойству ReturnStatusDataDOMEventObject объекта присвоено значение false, Microsoft InfoPath отклоняет внесенные изменения, а пользователю отображается окно сообщения. Если ошибка возникает в коде для события OnBeforeChange, InfoPath отклоняет изменения и восстанавливает данные в их предыдущем состоянии.
Примечание. Рекомендуется избегать переключения представлений во время события OnBeforeChange . Изменения еще не приняты, и переключение на другое представление может привести к ошибке.
Примечание. В некоторых случаях события, связанные с изменениями в базовом XML-документе формы, могут происходить несколько раз. Например, при изменении существующих данных выполняются операции вставки и удаления.
Примечание. Если в событии OnBeforeChange возникает ошибка проверки, документ не загружается. Блок try/catch в событии OnLoad можно использовать для перехвата этой ошибки проверки и загрузки документа, несмотря на ошибку.