OnBeforeChange-hendelsen

Microsoft Office InfoPath

Inntreffer etter at endringer i et skjemas underliggende XML-dokument er utført, men før endringene er godtatt.

Funksjon node::OnBeforeChange(ByRef pDataDOMEvent As DataDOMEvent)

pDataDOMEvent Obligatorisk DataDOMEvent. En referanse til DataDOMEvent-objektet.

Merknader

Denne hendelsesbehandlingen tillater at brukeren avbryter en operasjon.

Under OnBeforeChange-hendelsen er skjemaets underliggende XML-dokument plassert i skrivebeskyttet modus. Hvis ReturnStatus-egenskapen for DataDOMEvent-objektet er satt til False, forkaster Microsoft Office InfoPath 2003 endringene som ble gjort, og en meldingsboks vises for brukeren. Hvis det oppstår en feil i skriptkoden for hendelsesbehandlingen OnBeforeChange, forkaster InfoPath endringene og gjenoppretter dataene til forrige tilstand.

Merknader

  • Det er best å unngå å bytte visning under OnBeforeChange-hendelsen. Endringer er ennå ikke godtatt, og bytting til en annen visning kan føre til feil.
  • 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.
  • Hvis det oppstår en valideringsfeil i en OnBeforeChange-hendelsesbehandling, kan dokumentet ikke lastes inn. Du kan bruke en try-catch-blokk i OnLoad-hendelsen til å fange opp denne valideringsfeilen og laste inn dokumentet til tross for feilen.

Eksempel

I eksemplet fra eksempelskjemaet Events nedenfor brukes hendelsesbehandlingen OnBeforeChange til å validere dataene i et felt. Hvis dataene ikke er gyldige, brukes ReturnStatus-egenskapen for DataDOMEvent-objektet til å forkaste endringene.

function msoxd__RepVisitDt::OnBeforeChange(eventObj)
{
   var oNode = XDocument.DOM.selectSingleNode
      ("/Customers/CustomerInfo/ContactDates/PhoneContactDt");

   if (!oNode.text)
   {
      eventObj.ReturnMessage = "The Phone Contact Start date must be 
         set prior to the Representative Visit date.";
      eventObj.ReturnStatus = false;
      return;
   }

   // If the data is valid, eventObj.ReturnStatus = true.
   eventObj.ReturnStatus = true;
   return;
}