Opplæring 5: Skrive en hendelsesbehandler i JavaScript
Denne opplæringen inneholder instruksjoner om hvordan du skriver et sett med
hendelsesbehandlere. Opplæringen forutsetter at du har en grunnleggende rapportdesign,
basert på eksempeldatabasen Classic Models, Inc. Det eneste kravet til
startrapportdesignen er at den inneholder en kundetabell med en kolonne for
kundenavnet. I denne opplæringen teller du antallet kunder med navn som inneholder
strengen "Mini", og viser resultatet i et popup-vindu.
I denne opplæringen utfører du disse oppgavene:
Oppgave 1: Åpne rapportdesignen
Åpne en rapportdesign som bruker eksempeldatabasen Classic Car og viser en tabell med
kundenavn.
- Om nødvendig åpner du Navigator ved
å velge Vindu->Vis visning->Navigator.
- Dobbeltklikk på ønsket
rapportdesign. Filen åpnes i layoutredigeringsprogrammet, som vist i Figur 22-4.
Oppgave 2: Opprett og initialiser en teller i metoden Table.onCreate( )
For å telle antallet kunder med navn som inneholder strengen Mini, må du først deklarere
en global teller og sette verdien til null. Metoden Table.onCreate( ) er det mest
hensiktsmessige stedet å utføre denne oppgaven, fordi Table.onCreate( ) utføres
frør noen av radene blir hentet. Du øker denne verdien betinget i metoden Row.onCreate( ).
- I Layout velger du tabellen ved å
plassere markøren nær nedre venstre hjørne av tabellen. Du får frem tabellikonet, som
vist i Figur 22-5.
- Velg flippen Skript. Du får frem
skriptflippen, som vist i Figur 22-6.
- Skriv følgende kodelinje i
skriptvinduet for metoden onCreate( ):
- Velg Forhåndsvisning for å kjøre
rapporten og kontrollere at koden ikke lager noen feil.
- Gå ned til bunnen av rapporten, der
JavaScript-feilmeldingene står. Hvis det ikke er noen feil, vises rapporten slik den er i Figur 22-7.
Hvis du får en feilmelding, kan du ha
skrevet feil i en setning. I så fall går du tilbake til skriptvinduet, velger metoden
nettopp endret, retter feilen og velger Forhåndsvisning på nytt.
Oppgave 3: Øk tellerverdien i metoden Row.onCreate( )
Hvis du skal telle antallet kunder med strengen Mini i navnet, må du undersøke hvert
kundenavn og øke telleren med én for hver forekomst. Et logisk sted for denne oppgaven er
metoden Row.onCreate( ), som utføres hver gang det blir hentet en rad med data fra
datakilden.
- I Layout velger du Rad og deretter
Skript.
- Trekk ned listen med metoder øverst
i skriptvinduet og velg onCreate, som vist i Figur
22-8.
- Oppgi følgende linje med
JavaScript-kode i vinduet Skript:
Legg merke til at når du legger inn
punktumet etter dette, får du frem et popup-vindu med alle tilgjengelige metoder og
egenskaper, inkludert getRowData. Denne linjen med kode henter en forekomst av IRowData,
som har en metode, getExpressionValue( ), for å hente innholdet i en kolonne i raden.
- Skriv følgende JavaScript-linje
underlinjen du nettopp skrev inn:
Denne kodelinjen returnerer innholdet
i tabellkolonnen som kommer fra CUSTOMERNAME-kolonnen i datasettet.
Du kan bruke JavaScript-paletten til å
sette inn hvert av de følgende elementet på den foregående linjen:
- indexOf( )
Velg Interne (JavaScript-)
objekter->Strengfunksjoner->indexOf( )
- !=
Velg Operatorer->Sammenlikning->!=
- +=
Velg Operatorer->Tilordning->+=
- Velg Forhåndsvisning for å kjøre
rapporten på nytt og kontrollere at koden du oppgav, ikke opprettet noen feil.
Oppgave 4: Vis resultatet ved hjelp av metoden
ReportDesign.afterFactory( )
Hvis du skal vise antallet kunder med strengen Mini i navnet, setter du inn kode i en
metode som kjøres etter at alle radene i tabellen er blitt behandlet. Et logisk sted for
denne koden er i metoden ReportDesign.afterFactory( ).
- I Disposisjon velger du
rapportdesignen, som vist i Figur 22-9.
- Velg metoden afterFactory( ) fra
rullegardinlisten i skriptvinduet.
- Skriv følgende kode i metoden
afterFactory( ):
- Velg Forhåndsvisning for å se
resultatene. Hvis det ikke var feil i koden, ser du en rapport som ligner på rapporten i
Figur 22-10.
Hvis du ikke ser vinduet Count of Minis, kan du se om det ligger bak vinduet Eclipse. Hvis
du ikke får frem vinduet Count of Minis, skyldes det sannsynligvis en skriptfeil
forårsaket av en feil i koden.
Hvis du har mistanke om at det har oppstått en skriptfeil, går du til bunnen av
rapporten, der alle feilmeldingene vises. I de fleste situasjoner er det en kort
feilmelding ved siden av et plusstegn (+). Plusstegnet angir at det finnes en mer
detaljert feilmelding som kommer til syne når du utvider den korte feilmeldingen. Du
utvider den korte feilmeldingen ved å velge plusstegnet. Bla ned for å se den mer
detaljerte feilmeldingen.
