Partager via


_XDocumentEventSink2_Event.OnLoad, événement

Survient après le chargement d'un formulaire Microsoft Office InfoPath 2007, mais avant l'initialisation des vues.

Espace de noms : Microsoft.Office.Interop.InfoPath.SemiTrust
Assembly : Microsoft.Office.Interop.InfoPath.SemiTrust (dans microsoft.office.interop.infopath.semitrust.dll)

Syntaxe

Event OnLoad As _XDocumentEventSink2_OnLoadEventHandler

Dim instance As _XDocumentEventSink2_Event
Dim handler As _XDocumentEventSink2_OnLoadEventHandler

AddHandler instance.OnLoad, handler
event _XDocumentEventSink2_OnLoadEventHandler OnLoad

Remarques

Ce gestionnaire d'événements permet aux utilisateurs d'annuler une opération.

Si la propriété ReturnStatus de l'objet DocReturnEventObject a pour valeur false, InfoPath annule le chargement du formulaire. Si une erreur se produit dans le code de l'événement OnLoad, InfoPath l'ignore et s'appuie sur la propriété ReturnStatus. Si la propriété ReturnStatus n'est pas définie de manière explicite, la valeur par défaut true est utilisée.

Remarque

Lorsque l'événement OnLoad se produit, la vue n'est pas initialisée et la transformation XSL (XSLT) utilisée pour la vue n'est pas encore chargée. L'objet XDocument n'est ajouté à la collection XDocumentsCollection qu'une fois l'événement OnLoad déclenché. L'objet XDocument est toutefois accessible pendant l'événement OnLoad.

Important :

Cet événement nécessite un niveau de sécurité Autorisation totale. Pour définir ce niveau de sécurité, choisissez Options de formulaire dans le menu Outils de la fenêtre de création InfoPath et sélectionnez ensuite Autorisation totale dans l'onglet Sécurité. Un formulaire Autorisation totale doit être installé ou signé électroniquement.

Exemple

Dans l'exemple suivant, le gestionnaire d'événements OnLoad est utilisé pour déterminer si le formulaire a été signé électroniquement et si ce n'est pas le cas, pour initialiser certaines valeurs de date à l'aide d'une combinaison de fonctions et de fonctions personnalisées :

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

Cet exemple de gestionnaire d'événements Onload repose sur deux fonctions personnalisées : initializeNodeValue et 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;
 }
}

Voir aussi

Référence

_XDocumentEventSink2_Event, interface
Membres _XDocumentEventSink2_Event
Microsoft.Office.Interop.InfoPath.SemiTrust, espace de noms