_XDocumentEventSink2_Event.OnLoad Événement
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Se produit après le chargement d’un formulaire Microsoft InfoPath, mais avant l’initialisation des vues.
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
Type d'événement
Exemples
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.<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);
}
Cet exemple de gestionnaire d’événements Onload dépend de 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;
}
}
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.<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);
}
Cet exemple de gestionnaire d’événements Onload dépend de 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;
}
}
Remarques
Ce gestionnaire d'événements permet aux utilisateurs d'annuler une opération.
Si la ReturnStatus propriété de l’objet DocReturnEventObject est définie sur 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 pas ajouté à la XDocumentsCollection collection tant que l’événement OnLoad ne s’est pas produit. L’objet XDocument est toutefois accessible pendant l’événement OnLoad.
Important : cet événement nécessite un niveau de sécurité confiance 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.