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


Событие _XDocumentEventSink2_Event.OnLoad

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

Пространство имен: Microsoft.Office.Interop.InfoPath.SemiTrust
Сборка: Microsoft.Office.Interop.InfoPath.SemiTrust (в microsoft.office.interop.infopath.semitrust.dll)

Синтаксис

'Декларация
Event OnLoad As _XDocumentEventSink2_OnLoadEventHandler
'Применение
Dim instance As _XDocumentEventSink2_Event
Dim handler As _XDocumentEventSink2_OnLoadEventHandler

AddHandler instance.OnLoad, handler
event _XDocumentEventSink2_OnLoadEventHandler OnLoad

Заметки

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

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

ЗаметкаЗаметка

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

ЗаметкаВнимание!

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

Пример

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

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

Этот пример обработчика события 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 != "" && 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;
 }
}

См. также

Ссылка

Интерфейс _XDocumentEventSink2_Event
Члены _XDocumentEventSink2_Event
Пространство имен Microsoft.Office.Interop.InfoPath.SemiTrust