2012-03-27 8 views
2

Ich möchte einen Bericht für meine Domänenklasseninstanzen erstellen, aber nicht alle, nur die Benutzer, die in der GSP-Tabelle ausgewählt wurden (Kontrollkästchen markieren). Auf meinem Bericht werde ich auch einige Logik haben - einige Bedingungen, einige Berechnungen usw. Ich würde auch einige zusätzliche Daten von der Datenbank bekommen müssen. Wie mache ich das? Sollte ich Werte von ausgewählten Checkboxen in cotroller bekommen und es an jasper cotroller übergeben? Etwas wie folgt aus:Anfang jasperReport/iReport mit Grails

GSP:

<g:each in="${books}" var="bookInstance"> 
     <td> <g:checkBox name="book_${bookInstance.id}"/> </td> 
</g:each> 

Aktion:

def bookReport = { 
    def bookList = [] 
    params.each { 
     if(it.key.startsWith("book_")){ 
      bookList.add((it.key - "book_") as Long) 
     } 
    } 

    def bookCriteria = Book.createCriteria() 
    def books = bookCriteria.list { 
     'in'('id',bookList) 
    } 
    chain(controller:'jasper', data:books, action:'index', params:params) 
} 

I iReport für die Berichterstellung verwendet. Ich habe versucht, Bericht ohne SQL-Abfrage und Parameter zu erstellen. Meine Logik war, dass ich keine Datenquelle im Bericht angeben muss, wenn ich eine Karte von Domäneninstanzen wie im obigen Beispiel an den Jaspis-Controller übergebe. Aber ich bekomme einen leeren Bericht.

Ich habe auch versucht, den Bericht Datenquelle zu meiner Datenbank und Bericht Abfrage zu diesem: Wählen Sie * aus dem Buch, wo $ X {IN, ID, Bücher}. In diesem Fall wird unabhängig davon, was ich auswähle, der Bericht für alle Buchinstanzen erstellt.

Antwort

0

Haben Sie versucht ...

chain(controller:'jasper', model:[data:books], action:'index', params:params) 

... während die SQL-Zeichenfolge leer in Ihrem .jrxml zu verlassen?