Compartilhar via


_XDocumentEventSink2_Event.OnLoad Evento

Definição

Ocorre depois que um formulário do Microsoft InfoPath foi carregado, mas antes de qualquer exibição ter sido inicializada.

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

Exemplos

No exemplo a seguir, o manipulador de eventos OnLoad é usado para determinar se o formulário foi assinado digitalmente e, se não tiver, para inicializar alguns valores de data usando uma combinação de funções e funções 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 exemplo do manipulador de eventos onload depende de duas funções personalizadas: 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 != "" &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;
 }
}

No exemplo a seguir, o manipulador de eventos OnLoad é usado para determinar se o formulário foi assinado digitalmente e, se não tiver, para inicializar alguns valores de data usando uma combinação de funções e funções 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 exemplo do manipulador de eventos onload depende de duas funções personalizadas: 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 != "" &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;
 }
}

Comentários

Esse manipulador de eventos permite que os usuários cancelem uma operação.

Se a ReturnStatus propriedade do DocReturnEventObject objeto for definida como false, o InfoPath cancelará o carregamento do formulário. Se ocorrer um erro no código do evento OnLoad , o InfoPath o ignorará e dependerá da propriedade ReturnStatus . Se a propriedade ReturnStatus não for definida explicitamente, o valor padrão do true será usado.

Observação: quando o evento OnLoad ocorre, o modo de exibição não é inicializado e o XSL Transformation (XSLT) usado para o modo de exibição ainda não está carregado. O XDocument objeto não é adicionado à XDocumentsCollection coleção até que o evento OnLoad tenha ocorrido. No entanto, o objeto XDocument está disponível durante o evento OnLoad .

Importante: este evento requer um nível de segurança de confiança total. Para definir esse Nível de Segurança, escolha Opções de Formulário no menu Ferramentas na janela de design do InfoPath e, na guia Segurança, selecione Confiança Total. Um formulário de Confiança Total deve ser instalado ou assinado digitalmente.

Aplica-se a