_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 != "" && 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 != "" && 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, а затем на вкладке Безопасность выберите Полное доверие. Полностью доверенная форма должна быть установлена или иметь цифровую подпись.