_XDocumentEventSink2_Event.OnLoad Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt auf, nachdem ein Microsoft InfoPath-Formular geladen wurde, aber bevor Ansichten initialisiert wurden.
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
Ereignistyp
Beispiele
Im folgenden Beispiel wird der OnLoad-Ereignishandler verwendet, um zu bestimmen, ob das Formular digital signiert wurde. Ist dies nicht der Fall, werden einige Datenwerten mithilfe einer Kombination aus Skriptfunktionen und benutzerdefinierten Funktionen initialisiert:
[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);
}
Dieses Onload-Ereignishandlerbeispiel hängt von zwei benutzerdefinierten Funktionen ab: initializeNodeValue
und .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;
}
}
Im folgenden Beispiel wird der OnLoad-Ereignishandler verwendet, um zu bestimmen, ob das Formular digital signiert wurde. Ist dies nicht der Fall, werden einige Datenwerten mithilfe einer Kombination aus Skriptfunktionen und benutzerdefinierten Funktionen initialisiert:
[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);
}
Dieses Onload-Ereignishandlerbeispiel hängt von zwei benutzerdefinierten Funktionen ab: initializeNodeValue
und .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;
}
}
Hinweise
Dieser Ereignishandler lässt es zu, dass Benutzer einen Vorgang abbrechen.
Wenn die ReturnStatus -Eigenschaft des DocReturnEventObject Objekts auf false festgelegt ist, bricht InfoPath das Laden des Formulars ab. Tritt ein Fehler im Code für das OnLoad-Ereignis auf, wird der Fehler von InfoPath ignoriert und die ReturnStatus-Eigenschaft verwendet. Wenn die ReturnStatus-Eigenschaft nicht explizit festgelegt wurde, wird der Standardwert true verwendet.
Hinweis: Wenn das OnLoad-Ereignis auftritt, wird die Ansicht nicht initialisiert, und die für die Ansicht verwendete XSL-Transformation (XSLT) ist noch nicht geladen. Das XDocument -Objekt wird der XDocumentsCollection Auflistung erst hinzugefügt, nachdem das OnLoad-Ereignis aufgetreten ist. Das XDocument-Objekt ist jedoch während des OnLoad-Ereignisses verfügbar.
Wichtig: Für dieses Ereignis ist die Sicherheitsstufe "Voll vertrauenswürdig" erforderlich. Um diese Sicherheitsebene festzulegen, wählen Sie im InfoPath-Entwurfsfenster im Menü Extras die Option Formularoptionen und wählen anschließend auf der Registerkarte Sicherheit die Option Voll vertrauenswürdig aus. Ein Formular vom Typ "Voll vertrauenswürdig muss installiert oder digital signiert sein.