Freigeben über


_XDocumentEventSink2_Event.OnLoad Ereignis

Definition

Tritt auf, nachdem ein Microsoft InfoPath-Formular geladen wurde, aber bevor Ansichten initialisiert wurden.

public:
 event Microsoft::Office::Interop::InfoPath::SemiTrust::_XDocumentEventSink2_OnLoadEventHandler ^ OnLoad;
event Microsoft.Office.Interop.InfoPath.SemiTrust._XDocumentEventSink2_OnLoadEventHandler OnLoad;
member this.OnLoad : Microsoft.Office.Interop.InfoPath.SemiTrust._XDocumentEventSink2_OnLoadEventHandler 
Event OnLoad As _XDocumentEventSink2_OnLoadEventHandler 

Ereignistyp

Beispiele

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.<span class="label">OnLoad</span>)]
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 Onload-Ereignishandlerbeispiel 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 != "" &amp;&amp; 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;
 }
}

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.<span class="label">OnLoad</span>)]
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 Onload-Ereignishandlerbeispiel 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 != "" &amp;&amp; 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;
 }
}

Hinweise

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

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

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

Wichtig: Für dieses Ereignis ist die Sicherheitsstufe "Voll vertrauenswürdig" erforderlich. 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.

Gilt für: