Поделиться через


_XDocumentEventSink2_Event.OnLoad Событие

Определение

Происходит после загрузки формы Microsoft InfoPath, но до инициализации каких-либо представлений.

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 

Тип события

Примеры

В следующем примере обработчик события OnLoad используется для определения того, имеет ли форма цифровую подпись, и если нет, то выполняется инициализация некоторых значений дат с использованием комбинации функций и настраиваемых функций:

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

Этот пример обработчика событий Onload зависит от двух пользовательских функций: initializeNodeValue и 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;
 }
}

В следующем примере обработчик события OnLoad используется для определения того, имеет ли форма цифровую подпись, и если нет, то выполняется инициализация некоторых значений дат с использованием комбинации функций и настраиваемых функций:

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

Этот пример обработчика событий Onload зависит от двух пользовательских функций: initializeNodeValue и 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;
 }
}

Комментарии

Этот обработчик события позволяет пользователям отменить операцию.

Если свойству ReturnStatusDocReturnEventObject объекта присвоено значение false, InfoPath отменяет загрузку формы. Если возникает ошибка в коде для события OnLoad, InfoPath игнорирует ее и использует свойство ReturnStatus. Если свойство ReturnStatus не задано явно, используется значение по умолчанию true.

Примечание. При возникновении события OnLoad представление не инициализируется, а преобразование XSL (XSLT), используемое для представления, еще не загружено. Объект XDocument не добавляется в коллекцию XDocumentsCollection до тех пор, пока не произошло событие OnLoad . Однако объект XDocument доступен во время события OnLoad.

Важно! Для этого события требуется уровень безопасности полного доверия. Для задания этого уровня безопасности выберите Параметры формы из меню Сервис в окне конструктора InfoPath, а затем на вкладке Безопасность выберите Полное доверие. Полностью доверенная форма должна быть установлена или иметь цифровую подпись.

Применяется к