Событие _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