Skjemahendelser i eksempelskjemaet Events
Eksempelskjemaet Events implementerer en rekke Microsoft Office InfoPath 2003-skjemahendelser som kan brukes til å reagere på bestemte hendelser som inntreffer når et skjema åpnes og fylles ut. Skjemahendelser kan inntreffe når versjonsnummeret til et skjema kontrolleres, når et skjema åpnes, når skjemavisning endres eller etter at et skjema er flettet med et annet skjema.
Tabellen nedenfor viser skjemahendelsene som er implementert i eksempelskjemaet Events, samt en beskrivelse av hvordan de brukes.
Hendelse | Beskrivelse |
---|---|
OnVersionUpgrade | Brukes til å kontrollere at versjonsnummeret til skjemaet som åpnes, stemmer overens med versjonsnummeret til det opprinnelige skjemaet. Hvis versjonsnumrene ikke stemmer overens, inntreffer denne hendelsen, og skriptkode kan brukes til å oppdatere skjemaet eller vise en feilmelding. |
OnLoad | Brukes til å initialisere skjemaet når det åpnes. Når denne hendelsen inntreffer, kan skriptkode brukes til å angi visning basert på dataene i skjemaet. |
OnSwitchView | Brukes ved endring fra én visning til en annen. Denne hendelsen inntreffer når brukeren endrer visning, og skriptkode kan brukes til å sette inn data i skjemaet. |
OnAfterImport | Brukes til ytterligere behandling etter at et skjema er flettet med et annet skjema. Denne hendelsen inntreffer når data er importert fra et annet skjema, og skriptkode kan brukes til å angi visning basert på de flettede dataene i skjemaet. |
Obs! OnSubmitRequest-hendelsen er også en skjemahendelse, men den brukes ikke i eksempelskjemaet Events.
Bruke OnVersionUpgrade-hendelsen
OnVersionUpgrade-hendelsen inntreffer ved åpning av et skjema som inneholder et versjonsnummer som er eldre enn versjonsnummeret til det opprinnelige skjemaet. Versjonsnummeret til et skjema finnes i solutionVersion-attributtet for skjemaets mso-infoPathSolution-behandlingsinstruksjon.
Hvis du vil bruke OnVersionUpgrade-hendelsen, velger du Advanced-kategorien (Avansert) i Forms Options-dialogboksen (Alternativer for skjema), som er tilgjengelig via Tools-menyen (Verktøy) i utformingsmodus. I denne kategorien kan du angi versjonsnummeret til skjemaet og hvordan InfoPath skal håndtere versjonsoppgraderinger. Du aktiverer OnVersionUpgrade-hendelsen ved å velge Use script event (Bruk skripthendelse) under On version upgrade (Ved versjonsoppgradering) og klikke Edit (Rediger). Microsoft Script Editor (MSE) åpnes og viser den InfoPath-genererte hendelsesbehandlingen.
Obs! Hendelsesbehandling i InfoPath må opprettes i utformingsmodus.
I eksempelskjemaet Events kontrollerer OnVersionUpgrade-hendelsen om skjemaet med feil versjonsnummer inneholder et EmailAddress-element. Hvis et slikt element ikke finnes, blir det lagt til. Hvis operasjonen mislykkes, brukes Alert-metoden for UI-objektet til å varsle brukeren. Eksemplet fra eksempelskjemaet Events nedenfor viser hendelsesbehandlingen OnVersionUpgrade:
function XDocument::OnVersionUpgrade(eventObj)
{
if (!XDocument.DOM.selectSingleNode("/Customers/CustomerInfo/EmailAddress"))
{
try
{
// Create the new element.
var objItemNode =
XDocument.DOM.selectSingleNode("/Customers/CustomerInfo")
.ownerDocument.createElement("EmailAddress");
// Add the new <item> element to the XML document as a
// child of the <order> element.
XDocument.DOM.selectSingleNode("/Customers/CustomerInfo")
.appendChild(objItemNode);
}
catch(ex)
{
XDocument.UI.Alert("There was an error inserting the " +
"<EmailAddress> node.\nDescription: " + ex.description);
}
}
}
Hvis du vil teste OnVersionUpgrade-hendelsen, åpner du eksempelskjemaet Events, klikker Open (Åpne) på File-menyen (Fil) og åpner filen WRONGVER.XML i Samples-mappen. Dette skjemaet inneholder et versjonsnummer som er eldre enn det opprinnelige eksempelskjemaet, og har ikke noe EmailAddress-element. Når du lagrer skjemaet etter at InfoPath har rettet det ved hjelp av skriptkoden i OnVersionUpgrade-hendelsen, oppdateres versjonsnummeret og EmailAddress-elementet.
OnLoad-hendelsen inntreffer når et InfoPath-skjema åpnes (eller lastes inn).
Hvis du vil bruke OnLoad-hendelsen, klikker du On Load Event på undermenyen Script på Tools-menyen i utformingsmodus. Microsoft Script Editor (MSE) åpnes og viser den InfoPath-genererte hendelsesbehandlingen.
Obs! Hendelsesbehandling i InfoPath må opprettes i utformingsmodus.
I eksempelskjemaet Events kontrollerer OnLoad-hendelsen om bestemte data finnes i skjemaets underliggende XML-dokument. Basert på verdiene som blir funnet, angir OnLoad-hendelsen deretter visning ved hjelp av IsDefault-egenskapen for ViewInfos-samlingen, som er tilgjengelig via XDocument-objektet. Eksemplet fra eksempelskjemaet Events nedenfor viser hendelsesbehandlingen OnLoad:
function XDocument::OnLoad(eventObj)
{
oContactedNode = XDocument.DOM
.selectSingleNode("/Customers/CustomerInfo/Contacted");
oArchivedNode = XDocument.DOM
.selectSingleNode("/Customers/CustomerInfo/Archived");
oCustomerName = XDocument.DOM
.selectSingleNode("/Customers/CustomerInfo/CustomerName");
if (oContactedNode.text == "false" && !oCustomerName.text)
XDocument.ViewInfos("New Customer").IsDefault = true;
else if (oContactedNode.text == "false" && oCustomerName.text)
XDocument.ViewInfos("Contact Customer").IsDefault = true;
else
XDocument.ViewInfos("Archive Customer").IsDefault = true;
}
OnSwitchView-hendelsen inntreffer når brukeren endrer visning i et InfoPath-skjema.
Hvis du vil bruke OnSwitchView-hendelsen, klikker du On Switch Views Event (Hendelsen Ved bytt visning) på Script-undermenyen på Tools-menyen i utformingsmodus. Microsoft Script Editor (MSE) åpnes og viser den InfoPath-genererte hendelsesbehandlingen.
Obs! Hendelsesbehandling i InfoPath må opprettes i utformingsmodus.
I eksempelskjemaet Events legger OnSwitchView-hendelsen til et notat i feltet Archived Customer Notes (Arkiverte kundenotater) hver gang visningen Archived Customer (Arkivert kunde) velges. Dette gjøres ved hjelp av selectSingleNode-metoden for XML DOM, som er tilgjengelig via DOM-egenskapen for XDocument-objektet. Eksemplet fra eksempelskjemaet Events nedenfor viser hendelsesbehandlingen OnSwitchView:
function XDocument::OnSwitchView(eventObj)
{
var oDate = new Date();
if (XDocument.View.Name == "Archive Customer")
{
var oNotesNode = XDocument.DOM
.selectSingleNode("/Customers/CustomerInfo/Notes");
var oDivNode = XDocument.DOM
.createNode(1, "div", "http://www.w3.org/1999/xhtml");
oDivNode.text = "Note recorded " + oDate.toString();
oNotesNode.appendChild(oDivNode);
}
}
OnAfterImport-hendelsen inntreffer etter at et skjema er flettet med (eller importert til) et annet skjema.
I eksempelskjemaet Events angir OnAfterImport-hendelsen visning basert på dataene i skjemaet etter fletting. Dette gjøres ved hjelp av SwitchView-metoden for View-objektet, som er tilgjengelig via XDocument-objektet. Eksemplet fra eksempelskjemaet Events nedenfor viser hendelsesbehandlingen OnAfterImport:
function XDocument::OnAfterImport(eventObj)
{
XDocument.View.SwitchView("Archive Customer");
}
Obs! OnAfterImport-hendelsen er ikke tilgjengelig i utformingsmodus. Hvis du vil bruke denne hendelsen, må du opprette hendelsesbehandlingen manuelt i skriptfilen, som beskrevet i eksemplet ovenfor.
Hvis du vil teste OnAfterImport-hendelsen, åpner du eksempelskjemaet Events, klikker Merge Forms (Flett skjemaer) på File-menyen og åpner filen CUSTOMER.XML i Samples-mappen. Dette skjemaet inneholder kundekontaktinformasjon som kan flettes med eksempelskjemaet Events.