Forrige emneNeste emne


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.

  1. Om nødvendig åpner du Navigator ved å velge Vindu->Vis visning->Navigator.
  2. 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( ).

  1. 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.
  2. Velg flippen Skript. Du får frem skriptflippen, som vist i Figur 22-6.
  3. Skriv følgende kodelinje i skriptvinduet for metoden onCreate( ):
  4. countOfMinis = 0; 
    
  5. Velg Forhåndsvisning for å kjøre rapporten og kontrollere at koden ikke lager noen feil.
  6. 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.
  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.

  1. I Layout velger du Rad og deretter Skript.
  2. Trekk ned listen med metoder øverst i skriptvinduet og velg onCreate, som vist i Figur 22-8.
  3. Oppgi følgende linje med JavaScript-kode i vinduet Skript:
  4. row=this.getRowData( ); 
    
    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.
  5. Skriv følgende JavaScript-linje underlinjen du nettopp skrev inn:
  6. CustName=row.getExpressionValue( "row[CUSTOMERNAME]" ); 
    
    Denne kodelinjen returnerer innholdet i tabellkolonnen som kommer fra CUSTOMERNAME-kolonnen i datasettet.
  7. Skriv følgende kodelinje for å øke telleren du opprettet i Opprett og initialiser en teller i metoden Table.onCreate( ).
  8. if( CustName.indexOf( "Mini" ) != -1 ) countOfMinis += 1; 
    
    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->+=
  9. 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( ).

  1. I Disposisjon velger du rapportdesignen, som vist i Figur 22-9.
  2. Velg metoden afterFactory( ) fra rullegardinlisten i skriptvinduet.
  3. Skriv følgende kode i metoden afterFactory( ):
  4. importPackage( Packages.javax.swing ); 
    frame = new JFrame( "Count of Minis = " + countOfMinis ); 
    frame.setBounds( 310, 220, 300, 20 ); 
    frame.show( ); 
    
  5. 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.


(c) Copyright Actuate Corporation 2006

Forrige emneNeste emne