OnValidate-hendelsen

Microsoft Office InfoPath

Inntreffer etter at endringer i et skjemas underliggende XML-dokument er godtatt, men før OnAfterChange-hendelsen inntreffer.

Funksjon node::OnValidate(ByRef pDataDOMEvent As DataDOMEvent)

pDataDOMEvent Obligatorisk DataDOMEvent. En referanse til DataDOMEvent-objektet.

Merknader

Denne hendelsesbehandlingen tillater ikke at brukeren avbryter en operasjon.

Under OnValidate-hendelsen er skjemaets underliggende XML-dokument plassert i skrivebeskyttet modus.

OnValidate-hendelsen brukes vanligvis til feilbehandling og arbeid med Errors-samlingen, for eksempel til å legge til nye feil eller slette eksisterende feil.

Obs!  I noen tilfeller kan hendelser som er relatert til endringer i et skjemas underliggende XML-dokument, inntreffe mer enn én gang. Hvis for eksempel eksisterende data endres, utføres en innsettings- og sletteoperasjon.

Eksempel

I deleksemplet fra eksempelskjemaet Events nedenfor brukes hendelsesbehandlingen OnValidate til å validere kontaktinformasjon. Hvis dataene er gyldige, brukes ReportError-metoden for DataDOMEVent-objektet til å opprette en feil.

function msoxd__ContactDates::OnValidate(eventObj)
{
   var iNumberOfDays = 0;
   var objEmailDate = XDocument.DOM.selectSingleNode
      ('/Customers/CustomerInfo/ContactDates/EmailCampaignDt');
   var objPhoneContactDate = XDocument.DOM.selectSingleNode
      ('/Customers/CustomerInfo/ContactDates/PhoneContactDt');
   var objRepVisitDate = XDocument.DOM.selectSingleNode
      ('/Customers/CustomerInfo/ContactDates/RepVisitDt');

   // First validate the email and phone contact dates.
   if (!objEmailDate || !objPhoneContactDate)
      return;

   var emailDate = 
      new Date(objEmailDate.text.replace(/(.*)-(.*)-(.*)/, "$2-$3-$1"));
   var phoneContactDate = 
      new Date(objPhoneContactDate.text.replace(/(.*)-(.*)-(.*)/, "$2-$3-$1"));

   if (isNaN(emailDate) || isNaN(phoneContactDate))
      return;

   // Get the number of days between the two dates.
   iNumberOfDays = GetElapsedDays(emailDate, phoneContactDate);

   if (iNumberOfDays < REQUIRED_PHONE_EMAIL_INTERVAL)
      eventObj.ReportError(objPhoneContactDate, 
         "The Phone Contact Start date must occur after " + 
         REQUIRED_PHONE_EMAIL_INTERVAL + 
         " days from the start of the Email Campaign.", false);
   ...
}