Share via


_XDocumentEventSink2_Event.OnLoad Evento

Definición

Se produce después de cargar un formulario de Microsoft InfoPath, pero antes de que se hayan inicializado las vistas.

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 

Tipo de evento

Ejemplos

En el ejemplo siguiente, se utiliza el controlador de eventos OnLoad para determinar si el formulario se ha firmado digitalmente y, en caso negativo, inicializar algunos valores de datos utilizando una combinación de funciones y funciones personalizadas:

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

Este ejemplo del controlador de eventos Onload depende de dos funciones personalizadas: initializeNodeValue y 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;
 }
}

En el ejemplo siguiente, se utiliza el controlador de eventos OnLoad para determinar si el formulario se ha firmado digitalmente y, en caso negativo, inicializar algunos valores de datos utilizando una combinación de funciones y funciones personalizadas:

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

Este ejemplo del controlador de eventos Onload depende de dos funciones personalizadas: initializeNodeValue y 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;
 }
}

Comentarios

Este controlador de eventos permite al usuario cancelar una operación.

Si la ReturnStatus propiedad del DocReturnEventObject objeto se establece en false, InfoPath cancela la carga del formulario. Si se produce un error en el código del evento OnLoad, InfoPath lo omite y se basa en la propiedad ReturnStatus. Si la propiedad ReturnStatus no se ha establecido de manera explícita, se utilizará el valor predeterminado: true.

Nota: Cuando se produce el evento OnLoad , la vista no se inicializa y la transformación XSL (XSLT) usada para la vista aún no se ha cargado. El XDocument objeto no se agrega a la XDocumentsCollection colección hasta que se ha producido el evento OnLoad . Sin embargo, el objeto XDocument estará disponible durante el evento OnLoad.

Importante: Este evento requiere un nivel de seguridad de plena confianza. Para establecer este nivel de seguridad, elija Opciones de formulario en el menú Herramientas de la ventana de diseño de InfoPath, a continuación, en la pestaña Seguridad seleccione Plena confianza. Debe haber un formulario de plena confianza instalado o firmado digitalmente.

Se aplica a