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;
}