_DataDOMEventSink_Event.OnBeforeChange Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Ocurre después de que se hayan efectuado los cambios en el documento XML subyacente de un formulario, pero antes de aceptarlos.
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
Tipo de evento
Ejemplos
En el siguiente ejemplo, el controlador de evento OnBeforeChange se utiliza para validar los datos en un campo. Si los datos no son válidos, se usa la ReturnStatus propiedad del DataDOMEventObject objeto para rechazar los cambios.
[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;
}
En el siguiente ejemplo, el controlador de evento OnBeforeChange se utiliza para validar los datos en un campo. Si los datos no son válidos, se usa la ReturnStatus propiedad del DataDOMEventObject objeto para rechazar los cambios.
[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;
}
Comentarios
Este controlador de eventos permite al usuario cancelar una operación DataDOM.
Durante el evento OnBeforeChange, el documento XML subyacente del formulario se pone en modo de sólo lectura. Si la ReturnStatus propiedad del DataDOMEventObject objeto se establece en false, Microsoft InfoPath rechaza los cambios realizados y se muestra un cuadro de mensaje al usuario. Si tiene lugar un error en el código del controlador de eventos OnBeforeChange, InfoPath rechazará los cambios y restaurará los datos al estado anterior.
Nota: Es mejor evitar el cambio de vistas durante el evento OnBeforeChange ; los cambios aún no se han aceptado y cambiar a otra vista puede dar lugar a un error.
Nota: En algunos casos, los eventos relacionados con los cambios en el documento XML subyacente de un formulario pueden producirse más de una vez. Por ejemplo, cuando se cambian los datos existentes, tiene lugar una operación de inserción y eliminación.
Nota: Si se encuentra un error de validación en el evento OnBeforeChange , el documento no se carga. Se puede usar un bloque try/catch en el OnLoad evento para detectar este error de validación y cargar el documento a pesar del error.