Inntreffer etter at et Microsoft Office InfoPath 2003-skjema er lastet inn, men før noen visninger er initialisert.
Funksjon XDocument::OnLoad(ByRef pEvent As DocReturnEvent)
pEvent Obligatorisk DocReturnEvent. En referanse til DocReturnEvent-objektet.
Merknader
Denne hendelsesbehandlingen tillater at brukeren avbryter en operasjon.
Hvis ReturnStatus-egenskapen for DocReturnEvent-objektet er satt til False, avbryter InfoPath innlastingen av skjemaet. Hvis det oppstår en feil i skriptkoden for hendelsesbehandlingen OnLoad, ignorerer InfoPath den og bruker ReturnStatus-egenskapen for DocReturnEvent-objektet. Hvis ReturnStatus-egenskapen ikke er eksplisitt angitt, brukes standardverdien True.
Obs! Når OnLoad-hendelsen inntreffer, initialiseres ikke visningen, og XSL-transformeringen (XSLT) for visningen lastes ikke inn. XDocument-objektet blir ikke lagt til i XDocuments-samlingen før OnLoad-hendelsen har inntruffet. XDocument-objektet er imidlertid tilgjengelig under OnLoad-hendelsen.
Eksempel
I eksemplet fra eksempelskjemaet Sales Report (Salgsrapport) nedenfor brukes hendelsesbehandlingen OnLoad til å finne ut om skjemaet er digitalt signert. Hvis skjemaet ikke er digitalt signert, initialiseres noen datoverdier som bruker en kombinasjon av skriptfunksjoner og egendefinerte funksjoner.
function XDocument::OnLoad(objEvent)
{
// Avoid DOM updates when the document has been digitally signed.
if (XDocument.IsSigned)
return;
var today = new Date();
initializeNodeValue("/sls:salesReport/sls:date", getDateString(today));
initializeNodeValue("/sls:salesReport/sls:year", today.getFullYear());
}
Dette eksemplet på Onload-hendelsesbehandling avhenger av to egendefinerte funksjoner, som også finnes i eksempelskjemaet for salgsrapporter: initializeNodeValue og setNodeValue.
function initializeNodeValue(xpath, strValue)
{
var xmlNode = getNode(xpath);
// Set the node value *ONLY* if the node is empty.
if (xmlNode.text == "")
setNodeValue(xmlNode, strValue);
}
function setNodeValue(xpath, value)
{
var xmlNode = getNode(xpath);
if (!xmlNode)
return;
// The xsi:nil needs to be removed before we set the value.
if (value != "" && xmlNode.getAttribute("xsi:nil"))
xmlNode.removeAttribute("xsi:nil");
// Setting the value would mark the document as dirty.
// Let's do that if the value has really changed.
if (xmlNode.text != value)
xmlNode.text = value;
}