Condividi tramite


Evento _XDocumentEventSink2_Event.OnLoad

Generato quando un modulo di Microsoft Office InfoPath 2007 è stato caricato, ma prima che venga inizializzata una visualizzazione.

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

Sintassi

Event OnLoad As _XDocumentEventSink2_OnLoadEventHandler

Dim instance As _XDocumentEventSink2_Event
Dim handler As _XDocumentEventSink2_OnLoadEventHandler

AddHandler instance.OnLoad, handler
event _XDocumentEventSink2_OnLoadEventHandler OnLoad

Osservazioni

Questo gestore eventi consente di annullare un'operazione.

Se la proprietà ReturnStatus dell'oggetto DocReturnEventObject è impostata su false, InfoPath annulla il caricamento del modulo. Se si verifica un errore nel codice dell'evento OnLoad, l'errore viene ignorato e viene utilizzata la proprietà ReturnStatus. Se la proprietà ReturnStatus non è impostata esplicitamente, viene utilizzato il valore predefinito true.

Nota:

Quando si verifica l'evento OnLoad, la visualizzazione non viene inizializzata e la trasformazione XSL (XSLT) utilizzata per la visualizzazione non viene caricata. L'oggetto XDocument non viene aggiunto all'insieme XDocumentsCollection finché non viene eseguito l'evento OnLoad. Tuttavia, l'oggetto XDocument è disponibile durante l'evento OnLoad.

Importante:

Questo evento richiede il livello di protezione Attendibilità completa. Per impostare questo livello di protezione, scegliere Opzioni modulo dal menu Strumenti nella finestra di progettazione di InfoPath, quindi selezionare Attendibilità completa nella scheda Protezione. Un modulo completamente attendibile deve essere installato o firmato digitalmente.

Esempio

Nell'esempio seguente, il gestore eventi OnLoad viene utilizzato per determinare se al modulo è stata aggiunta una firma digitale. In caso negativo, vengono inizializzati alcuni valori di data utilizzando una combinazione di funzioni e funzioni personalizzate:

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

Questo esempio del gestore eventi Onload dipende da due funzioni personalizzate: initializeNodeValue e 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;
 }
}

Vedere anche

Riferimenti

Interfaccia _XDocumentEventSink2_Event
Membri _XDocumentEventSink2_Event
Spazio dei nomi Microsoft.Office.Interop.InfoPath.SemiTrust