_XDocumentEventSink2_Event.OnLoad-Ereignis

Tritt nach dem Laden eines Microsoft Office InfoPath 2007-Formulars, jedoch vor dem Initialisieren von Ansichten ein.

Namespace: Microsoft.Office.Interop.InfoPath.SemiTrust
Assembly: Microsoft.Office.Interop.InfoPath.SemiTrust (in microsoft.office.interop.infopath.semitrust.dll)

Syntax

Event OnLoad As _XDocumentEventSink2_OnLoadEventHandler

Dim instance As _XDocumentEventSink2_Event
Dim handler As _XDocumentEventSink2_OnLoadEventHandler

AddHandler instance.OnLoad, handler
event _XDocumentEventSink2_OnLoadEventHandler OnLoad

Hinweise

Dieser Ereignishandler lässt es zu, dass Benutzer einen Vorgang abbrechen.

Wenn die ReturnStatus-Eigenschaft des DocReturnEventObject-Objekts auf false festgelegt wird, wird das Laden des Formulars von InfoPath abgebrochen. Tritt ein Fehler im Code für das OnLoad-Ereignis auf, wird der Fehler von InfoPath ignoriert und die ReturnStatus-Eigenschaft verwendet. Wurde die ReturnStatus-Eigenschaft nicht explizit festgelegt, wird der Standardwert true verwendet.

Hinweis:

Wenn das OnLoad-Ereignis eintritt, wird die Ansicht nicht initialisiert, und die für die Ansicht verwendete XSL-Transformation (XSLT) wird noch nicht geladen. Das XDocument-Objekt wird erst zur XDocumentsCollection-Auflistung hinzugefügt, nachdem das OnLoad-Ereignis eingetreten ist. Das XDocument-Objekt ist jedoch während des OnLoad-Ereignisses verfügbar.

Wichtig:

Dieses Ereignis erfordert die Sicherheitsebene "Voll vertrauenswürdig". Um diese Sicherheitsebene festzulegen, wählen Sie im InfoPath-Entwurfsfenster im Menü Extras die Option Formularoptionen und wählen anschließend auf der Registerkarte Sicherheit die Option Voll vertrauenswürdig aus. Ein Formular vom Typ "Voll vertrauenswürdig muss installiert oder digital signiert sein.

Beispiel

Im folgenden Beispiel wird der OnLoad-Ereignishandler verwendet, um zu bestimmen, ob das Formular digital signiert wurde. Ist dies nicht der Fall, werden einige Datenwerten mithilfe einer Kombination aus Skriptfunktionen und benutzerdefinierten Funktionen initialisiert:

[InfoPathEventHandler(EventType=InfoPathEventType.OnLoad)]
public void OnLoad(DocReturnEvent e)
{ 
 // Avoid DOM updates when the document has been digitally signed.
 if (thisXDocument.IsSigned)
 {
  return;
 }

 string today = thisXDocument.Util.Date.Today().ToString();
 initializeNodeValue("/sls:salesReport/sls:date", today);
}

Dieses Beispiel für Onload-Ereignishandler hängt von zwei benutzerdefinierten Funktionen ab: initializeNodeValue und setNodeValue.

private void initializeNodeValue(string xpath, string strValue)
{
 IXMLDOMNode xmlNode = thisXDocument.DOM.selectSingleNode(xpath);
 // Set the node value *ONLY* if the node is empty.
 if (xmlNode.text == "")
 {
  setNodeValue(xmlNode, strValue);
 }
}

private void setNodeValue(IXMLDOMNode xmlNode, string strValue)
{   
 if (xmlNode == null)
 {
  return;
 }

 // The xsi:nil needs to be removed before we set the value.
 if (strValue != "" && xmlNode.attributes.getNamedItem("xsi:nil") != null)
 {
  xmlNode.attributes.removeNamedItem("xsi:nil");
 }

 // Setting the value would mark the document as dirty.
 // Let's do that if the value has really changed.
 if (xmlNode.text != strValue)
 {
  xmlNode.text = strValue;
 }
}

Siehe auch

Referenz

_XDocumentEventSink2_Event-Schnittstelle
_XDocumentEventSink2_Event-Member
Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace