Obs!: Vi ønsker å gi deg det nyeste hjelpeinnholdet så raskt som mulig, på ditt eget språk. Denne siden er oversatt gjennom automatisering og kan inneholde grammatiske feil eller unøyaktigheter. Formålet vårt er at innholdet skal være nyttig for deg. Kan du fortelle oss om informasjonen var nyttig for deg nederst på denne siden? Her er den engelske artikkelen for enkel referanse.
Hvis du er vant til å skrive skript, kan du legge til et skript i Microsoft Office InfoPath-skjemamal ved hjelp av Microsoft JScript eller Microsoft Visual Basic Scripting Edition (VBScript) skriptspråk. Legge til skript, kan du tilpasse skjemamalen utover hva som er tilgjengelig med regler, formler, datavalidering eller betinget formatering. Du kan for eksempel legge til et skript som oppretter og sender en e-postmelding når en bruker bytter visning i et skjema basert på skjemamalen. Du kan konfigurere en skjemamal for å opprette og sende en e-postmelding bare ved hjelp av et skript.
I denne artikkelen
Oversikt
Du kan tilpasse InfoPath-skjemamal ved hjelp av regler, formler, datavalidering og betinget formatering. Selv om disse funksjonene er svært fleksible og kan håndtere en rekke oppgaver, noen aktiviteter som er utenfor rekkevidde for disse funksjonene. Du kan for eksempel bruke regler til å sende en e-postmelding når en bruker angir en verdi i en tekstboks i et skjema. Hvis du trenger å tilpasse skjemamalen på en måte som er utenfor rekkevidde for disse funksjonene, og du er fortrolig med å skrive skript ved hjelp av skriptspråk JScript eller VBScript, kan du legge til et skript som kjøres når en bruker åpner et nytt skjema eller endrer en ex jemmeside skjema som er basert på skjemamalen.
Når du legger til et skript i en skjemamal, startes i Microsoft Script Editor (MSE), der du kan legge til, redigere og feilsøke skript i en skjemamal og plasserer markøren i den valgte hendelsen. InfoPath legger automatisk til en hendelsesbehandling skriptet. En hendelsesbehandling er funksjonskoden i en InfoPath-skjemamal som svarer på en brukerhandling eller en endring i XML-dataene i et skjema. Hvis du vil at brukerne skal lagre skjemaene på flere nettverksplasseringer, kan du for eksempel legge til et skript OnSaveRequest -hendelsesbehandling. Når du legger til et skript å kjøre når brukeren lagrer et skjema basert på skjemamalen, startes Skriptredigering og legger til ett av følgende koder i skriptet.
Obs!: Koden som legges det avhenger av det valgte skriptspråket.
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnSaveRequest(eventObj)
{
// Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation();
// Write the code to be run after saving here.
eventObj.ReturnStatus = true;
}
VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnSaveRequest(eventObj)
' Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation
' Write the code to be run after saving here.
eventObj.ReturnStatus = True
End Sub
Deretter kan du legge til kode i de aktuelle stedene i tilfelle behandlingsprogram som lagrer skjemaet til forskjellige nettverksplasseringen. Når en bruker lagrer et skjema basert på denne skjemamalen, kjøres koden i OnSaveRequest -hendelsesbehandling.
Obs!: Denne artikkelen inneholder en høynivåvisning av oppretting av skript i en skjemamal. Hvis du vil lære mer om Microsoft Script Editor og bestemte objekter, metoder, hendelser og egenskaper som brukes i InfoPath, kan du se InfoPath Utviklerreferanse.
InfoPath legges automatisk til hendelsesbehandling for alle unntatt én av følgende hendelser.
Hendelsesbehandling |
Beskrivelse |
Fremgangsmåte for oppretting av |
OnAfterChange |
Denne hendelsen kjører når en bruker endrer verdien i den angitte kontrollen som er bundet til et felt. Du kan for eksempel vise en egendefinert oppgaverute for HTML når en bruker velger et element i en listekontroll. Denne hendelsen kjører etter hendelsen OnValidate . |
Høyreklikk en kontroll i skjemamalen eller et felt i oppgaveruten Datakilde, velger du programmering på hurtigmenyen, og klikk deretter Hendelsen. |
OnAfterImport |
Denne hendelsen kjører når brukeren fletter klarer flere skjemaer til ett skjema. |
Legge til manuelt i deklarasjon for hendelsesbehandling OnAfterImport direkte til script-fil ved hjelp av Microsoft Skriptredigering. Denne hendelsesbehandling kan ikke opprettes i utformingsmodus. |
OnBeforeChange |
Denne hendelsen kjører når en bruker endrer verdien i en kontroll, og før verdien er lagt til det angitte feltet som er bundet til kontrollen. Du kan for eksempel hindre en bruker fra å legge til en ekstra rad før du fyller ut den siste raden i en gjentatt tabell. |
Høyreklikk en kontroll i skjemamalen eller et felt i oppgaveruten Datakilde, velger du programmering på hurtigmenyen, og klikk deretter På før endring-hendelse. |
OnClick |
Denne hendelsen kjører når brukeren klikker en knapp som er tilknyttet denne hendelsen. Denne hendelsen er tilgjengelig når du har lagt til en knapp i skjemamalen. Du kan for eksempel utføre en kompleks beregning ved hjelp av verdiene i feltene i den primære datakilden når en bruker klikker knappen. |
Dobbeltklikk knappen, og klikk deretter Rediger skjema-kode i kategorien Generelt i dialogboksen Egenskaper. |
OnContextChange |
Denne hendelsen kjører når fokus endres i skjemaet. Denne hendelsen kjører når en bruker går fra en tekstboks til en datovelger, eller når en bruker bytter visning. Denne hendelsen oppstår etter at alle hendelser som andre har oppstått. |
Velg programmering på Verktøy-menyen, og klikk Hendelsen kontekst endringen. |
OnLoad |
Denne hendelsen kjører hver gang en bruker oppretter et nytt skjema eller åpner et eksisterende skjema som er basert på skjemamalen. Du kan for eksempel kopiere en liste over elementer fra en sekundær datakilde til den primære datakilden når en bruker åpner skjemaet. |
Velg programmering på Verktøy-menyen, og klikk deretter Hendelsen ved lasting. |
OnMergeRequest |
Denne hendelsen kjøres når slås sammen skjemaer som er basert på skjemamalen. Du kan for eksempel vise hvor mange skjemaer som ble flettet for å gi en bruker statusen under flettingen. |
Klikk Alternativer for skjema på Verktøy-menyen. Klikk Avansert i kategori-listen. Merk av for Flett ved hjelp av egendefinert kode under Slå sammen skjemaer, og klikk deretter Rediger. |
OnSaveRequest |
Denne hendelsen kjører når en bruker lagrer et skjema basert på skjemamalen. Du kan for eksempel lagre basert på denne skjemamalen til mer enn ett sted når en bruker lagrer skjemaet. InfoPath legger til to ekstra kodelinjer i denne hendelsen: en linje som lagrer skjemaet og en annen linje som forteller deg hvis InfoPath lagret skjemaet. |
Klikk Alternativer for skjema på Verktøy-menyen. Klikk Åpne og lagre i kategori-listen. Merk av for Lagre ved hjelp av egendefinert kode under Virkemåte ved lagring, og klikk deretter Rediger. |
OnSign |
Denne hendelsen kjøres når en bruker angir en digital signatur i et skjema. Du kan for eksempel legge til ytterligere data til den digitale signaturen i et utgiftsrapportskjema når en bruker logger den. |
Velg programmering på Verktøy-menyen, og klikk Hendelsen Logg. |
OnSubmitRequest |
Denne hendelsen kjører når en bruker sender hans eller hennes skjemadata. Du kan for eksempel sende skjemadata til en sikker webtjeneste når brukeren klikker Send på fil-menyen. Siden InfoPath ikke støtter en datatilkobling til en sikker webtjeneste, må du legge til en egendefinert datatilkobling som fungerer med din sikker webtjeneste. |
Klikk Sendealternativer på Verktøy-menyen. Merk av for Tillat brukere å sende dette skjemaet, klikk Utfør egendefinert handling ved hjelp av kode, og klikk deretter Rediger kode. |
OnSwitchView |
Denne hendelsen kjører når en bruker åpner et skjema basert på skjemamalen eller bytter til en annen visning i skjemaet. Når en bruker bytter til en bestemt visning, kan du for eksempel opprette en e-postmelding som inneholder data fra feltene i skjemaets primære datakilden. |
Klikk programmering på Verktøy-menyen, og klikk Hendelsen visning. |
OnValidate |
Denne hendelsen kjører når en bruker endrer verdien i en kontroll som er bundet til et felt. Når brukeren endrer verdien i en bestemt kontroll, kan du for eksempel beregne en ny verdi for en annen kontroll ved hjelp av nummeret som brukeren skrev inn, og et tall som er i skriptet. Denne hendelsen oppstår når du har kjørt OnBeforeChange hendelsesbehandling. |
Høyreklikk en kontroll i skjemamalen eller et felt i oppgaveruten Datakilde, velger du programmering på hurtigmenyen, og klikk Etter validere hendelsen. |
OnVersionUpgrade |
Denne hendelsen kjører når en bruker åpner et eksisterende skjema og versjonsnummeret til skjemamalen brukes av det eksisterende skjemaet er eldre enn versjonsnummeret til skjemamalen i dialogboksen publiseringsplassering. Når en bruker åpner et eksisterende skjema, kontrollerer InfoPath versjonsnummeret til skjemamalen som er forbundet med det eksisterende skjemaet. Hvis skjemamalen har et nytt versjonsnummer, kjøres InfoPath hendelsesbehandling OnVersion når brukeren åpner det eksisterende skjemaet. Anta for eksempel at du legger til et nytt felt i en eksisterende skjemamal og publisere den på nytt, og du vil bruke det nye feltet som skal legges til den primære datakilden hvis en bruker åpner et eksisterende skjema. Denne hendelsen legger til det nye feltet i den primære datakilden når en bruker åpner et eksisterende skjema. |
Klikk Alternativer for skjema på Verktøy-menyen. Klikk versjonskontroll i kategori-listen. Klikk Bruk egendefinert hendelse i listen på versjon oppgradere, og klikk deretter Rediger. |
Vurderinger for kompatibilitet
Du kan ikke legge til skript i en nettleserkompatibel skjemamal. Du kan legge til skript bare en skjemamal med skjemaer skal fylles ut i InfoPath. Du kan tilpasse en webleserkompatibel skjemamal bare ved hjelp av forvaltet kode.
Angi skriptspråk for en skjemamal
Hvis du vil tilpasse en skjemamal ved hjelp av skript, kan du bruke Microsoft JScript eller Microsoft Visual Basic Scripting Edition (VBScript). InfoPath er som standard konfigurert til å legge til skript ved hjelp av JScript. Hvis skjemamalen inneholder ikke skript eller forvaltet kode, og du foretrekker å bruke VBScript som skriptspråk, kan du endre skriptspråk for skjemamalen til VBScript. Du kan ikke bruke begge skriptspråk i samme skjemamal.
Hvis skjemamalen allerede inneholder skript på ett språk, og du vil bruke det andre språket, må du lagre det eksisterende skriptet slik at du kan konvertere skriptet til det andre språket, Fjern skriptet fra skjemamalen i Alternativer for skjema dialogboksen boksen, og legg deretter konverterte skriptet tilbake til skjemamalen. InfoPath kan ikke konvertere skript til et nytt skriptspråk. Endre skriptspråk i dialogboksen Alternativer for skjema, påvirker bare denne skjemamalen. Andre skjemamaler har JScript som standard skriptspråk.
-
Klikk Alternativer for skjema på Verktøy-menyen.
-
Klikk programmering i kategori-listen i dialogboksen Alternativer for skjema.
-
Klikk VBScript under programmeringsspråket, i listen kodespråk for skjemamal.
Obs!:
-
Når du angir skriptspråk og opprette én eller flere hendelsesbehandling for en skjemamal, kan du ikke endre skriptspråk for skjemamalen.
-
Hvis du har installert Microsoft Visual Studio 2005 Tools for Applications, er standardspråket Microsoft Visual Basic .NET. Du kan fortsatt bruke denne fremgangsmåten til å endre skriptspråk til VBScript.
-
Vise en melding hver gang det oppstår en hendelse
Hvis du vil vite hva hendelsesbehandling kjøres som svar på en handling eller en annen hendelse, kan du legge til midlertidig kode for å vise en melding når hendelsesbehandling kjøres. Du bør bruke denne koden bare til å bestemme når en hendelsesbehandling kjøres. Når du legger til denne koden, kan du bruke forhåndsvisning til å vise et skjema basert på denne skjemamalen eller til å publisere skjemamalen og deretter opprette en ny skjemamal. Del hendelsesbehandling kjøres bare hvis du oppretter et skjema når du har publisert skjemamalen. Du kan deretter utføre en handling som du tror kan kjøre hendelsesbehandling. Når en hendelsesbehandling kjører, kan du se en melding til alle.
Når du har funnet ut hvilke handlinger eller hendelser kjøres hendelsesbehandling, fjerner du koden og fortsetter utformingen av skjemamalen. Hvis du ikke fjerne denne koden, og deretter publiserer skjemamalen, ser brukerne denne meldingsboksen når hendelsesbehandling kjøres.
-
Legge til din hendelsesbehandling.
-
Hvis du vil legge til kode i JScript, skriver du inn XDocument.UI.Alert ("The hendelse navnet hendelse oppstod bare"); Erstatt med navnet på din hendelsesbehandling. Hvis du for eksempel hvis du legger til denne koden OnValidate hendelsesbehandling, skriver du XDocument.UI.Alert ("OnValidate ble nettopp kjørt");
-
Legge til kode i VBScript, skriver du inn XDocument.UI.Alert ("The hendelse navnet hendelse oppstod bare") For Hvis du legger til denne koden OnSaveRequest hendelsesbehandling, skriver du inn XDocument.UI.Alert ("The OnSaveRequest hendelsesbehandling nettopp kjørt")
-
Du kan teste koden, klikker du Forhåndsvisning på fil-menyen eller trykker CTRL + SKIFT + B og utføre en brukerhandling som kan starte hendelsen. Når det oppstår hendelsen med du kodelinje, vises en melding til alle meldingen din.
Obs!: Enkelte hendelser kan kreve at du publiserer skjemamalen og opprette et skjema basert på denne skjemamalen før du kan utføre en brukerhandling for å starte hendelsen.
-
Før du publiserer skjemamalen og gi brukerne mulighet til å fylle ut skjemaer som er basert på denne skjemamalen, sletter du koden du brukte til å vise melding-boksen.
Legge til et skript som kjøres når en bruker lagrer skjemadata
-
Klikk Alternativer for skjema på Verktøy-menyen.
-
Klikk Åpne og lagre i kategori-listen i dialogboksen Alternativer for skjema.
-
Merk av for Lagre ved hjelp av egendefinert kode under Virkemåte ved lagring, og klikk deretter Rediger. Microsoft Script Editor starter med markøren i OnSaveRequest -hendelsesbehandling.
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnSaveRequest(eventObj)
{
// Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation();
// Write the code to be run after saving here.
eventObj.ReturnStatus = true;
}VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnSaveRequest(eventObj)
' Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation
' Write the code to be run after saving here.
eventObj.ReturnStatus = True
End Sub -
Gjør ett eller begge av følgende:
-
Hvis du vil legge til et skript som kjøres før skjemaet lagres i InfoPath, erstatte kommentar Write the code to be run before saving here.med koden din.
-
Hvis du vil legge til et skript som kjøres når skjemaet lagres i InfoPath, erstatte kommentar Write the code to be run after saving here. med koden din.
-
-
Hvis du vil teste endringene, klikker du Forhåndsvisning på standardverktøylinjen eller trykker CTRL+SKIFT+B.
Obs!: Hvis hendelsesbehandling kjøres bare når du har opprettet et skjema basert på skjemamalen, publiserer skjemamalen ved å klikke Publiser på fil-menyen, og fullfør deretter veiviseren for publisering. Når du publiserer skjemamalen, opprette et skjema, og deretter utføre en handling for å kjøre hendelsesbehandling.
Legge til et skript som kjøres når en bruker sender skjemadata
-
Klikk Sendealternativer på Verktøy-menyen.
-
Merk av for Tillat brukere å sende dette skjemaet i dialogboksen Sendealternativer.
-
Klikk Utfør egendefinert handling ved hjelp av kode, og klikk deretter Rediger kode. Microsoft Script Editor starter med markøren i OnSubmitRequest hendelsesbehandling.
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnSubmitRequest(eventObj)
{
// If the submit operation is successful, set
// eventObj.ReturnStatus = true;
// Write your code here
}VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnSubmitRequest(eventObj)
' If the submit operation is successful, set
' eventObj.ReturnStatus = True
' Write your code here
End Sub -
Erstatt kommentar If the submit operation is successful, set eventObj.ReturnStatus = true Write your code here med koden.
-
Hvis du vil teste endringene, klikker du Forhåndsvisning på standardverktøylinjen eller trykker CTRL+SKIFT+B.
Legge til et skript som kjøres når brukeren klikker en knapp
-
Legge til en ny-knapp i en visning i skjemamalen, og dobbeltklikk deretter knappen.
Obs!: Hvis du legger til skript på en eksisterende knapp, dobbeltklikker du den eksisterende knappen i stedet.
-
Klikk på Generelt-fanen.
-
Klikk Rediger skjemakode. Microsoft Script Editor starter med markøren i OnClick hendelsesbehandling for knappen.
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function Button Name::OnClick(eventObj)
{
// Write your code here
}VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub Button Name_OnClick(eventObj)
' Write your code here
End Sub -
Erstatt kommentar Write your code here med koden.
-
Hvis du vil teste endringene, klikker du Forhåndsvisning på standardverktøylinjen eller trykker CTRL+SKIFT+B.
Legge til et skript som kjøres når eksisterende skjemaer slås sammen
-
Klikk Alternativer for skjema på Verktøy-menyen.
-
Klikk Avansert i kategori-listen i dialogboksen Alternativer for skjema.
-
Merk av for Aktiver skjemasammenslåing under Slå sammen skjemaer.
-
Merk av for Flett ved hjelp av egendefinert kode, og klikk deretter Rediger. Microsoft Script Editor starter med markøren i OnMergeRequest hendelsesbehandling.
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnMergeRequest(eventObj)
{
// Write the code that handles each form being merged here.
XDocument.ImportDOM(eventObj.DOM);
eventObj.ReturnStatus = true;
}VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnMergeRequest(eventObj)
' Write the code that handles each form being merged here.
XDocument.ImportDOM(eventObj.DOM)
eventObj.ReturnStatus = True
End Sub -
Erstatt kommentar Write the code that handles each form being merged here. med koden.
-
Hvis du vil teste koden i denne hendelsen, publisere skjemamalen, opprette flere skjemaer som er basert på denne skjemamalen og deretter slå sammen skjemamalene.
Obs!: Du Finn koblinger til mer informasjon om publisering av skjemamalen i Se også-delen.
Legge til et skript for å oppdatere eksisterende skjemaer
Hvis du har oppdatert en tidligere publisert skjemamal, og du vil oppdatere eksisterende skjemaer som er basert på malen, kan du legge til skript den oppdaterte skjemamalen som kjøres når en bruker åpner en eksisterende skjemaer. Når en bruker åpner et eksisterende skjema, kontrollerer InfoPath versjonsnummeret til den tilknyttede skjemamalen på publiseringsstedet du. Hvis versjonsnummeret av skjemamalen på publiseringsstedet du er nyere enn versjonsnummeret i det eksisterende skjemaet, som viser at har blitt oppdatert, kjøres InfoPath koden i denne hendelsen skal oppdatere det eksisterende skjemaet.
-
Klikk Alternativer for skjema på Verktøy-menyen.
-
Klikk versjonskontroll i kategori-listen i dialogboksen Alternativer for skjema.
-
Klikk Bruk egendefinert hendelse i listen på versjon oppgradere, og klikk deretter Rediger. Microsoft Script Editor starter med markøren i OnVersionUpgrade hendelsesbehandling.
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnVersionUpgrade(eventObj)
{
// Write your code here
}VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnVersionUpgrade(eventObj)
' Write your code here
End Sub -
Erstatt kommentar Write your code here med koden.
-
Basert på denne skjemamalen til å teste koden i denne hendelsen, publisere skjemamalen, opprette flere skjemaer, endre og publisere en oppdatert versjon av skjemamalen og åpne et eksisterende skjema som er basert på den gamle versjonen av denne skjemamalen.
Obs!: Du Finn koblinger til mer informasjon om publisering av skjemamalen i Se også-delen.
Legge til et skript for andre hendelser
Denne fremgangsmåten kan brukes til å legge til følgende hendelsesbehandling i skjemamalen:
-
OnAfterChange
-
OnBeforeChange
-
OnContextChange
-
OnLoad
-
OnSwitchView
-
OnSign
-
OnValidate
-
Velg programmering på Verktøy-menyen, og klikk deretter hendelsen som skal legges til hendelsesbehandling. Microsoft Script Editor starter med markøren i hendelsesbehandling du valgte.
-
Erstatt kommentar Write your code here med koden.