OnLoad-hendelsen

Microsoft Office InfoPath

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