2016-04-29 19 views
1

Ich verwende den folgenden Code, um die Spalteneigenschaften im Jaspis-Bericht anzuzeigen. Aber ich bin nicht in der Lage, die drei Eigenschaftenwerte zu einer einzelnen Spalte zu erhalten. Gibt es eine Möglichkeit, drei der Eigenschaften anzuzeigen, die "," in einer einzelnen Spalte anzeigen.Wie fügt man ColumnBuilder mehrere columnProperties (Felder) hinzu?

Die Datei enthält den folgenden Code:

DynamicReportBuilder drb = new DynamicReportBuilder(); 
drb.setTitle("Transaction List Export") 
       .setSubtitle("This report was generated at " + new Date()) 
       .setDetailHeight(15)     // defines the height for each record of the report 
       .setPrintColumnNames(true) 
       .setIgnorePagination(true)    // for Excel, we may don't want pagination, just a plain list 
       .setMargins(30, 20, 0, 15)    // define the margin space for each side (top, bottom, left and right) 
       .setDefaultStyles(titleStyle, subtitleStyle, headerStyle, detailStyle) 
       .setColumnsPerPage(1, 10) 
       .setUseFullPageWidth(true)    // we tell the report to use the full width of the page. this resizes 
                 // the columns width proportionally to meat the page width. 
       .setAllowDetailSplit(false) 
       .setReportName("Client List"); 
AbstractColumn columnClientLocation = ColumnBuilder.getNew() 
       .setColumnProperty("ClientAddress", String.class.getName()+Constants.COMMA) 
       .setColumnProperty("ClientCity",String.class.getName()+Constants.COMMA) 
       setColumnProperty("ClientPostalCode",String.class.getName()) 
       .setTitle(messages.getMessage(locale, "group.terminalinfo")) 
       .setWidth(80) 
       .build(); 
       width = width + 80; 

      /** 
      * We add the columns to the report (through the builder) in the 
      * order we want them to appear 
      */ 
      if(myContainer.getServiceProvider().equalsIgnoreCase("GOOG")) { 
       drb.addColumn(columnTransactionActivity) 
        .addColumn(columnClientLocation); 
      } 

Ich bin nicht in der Lage, die Werte von ClientAddress, ClientCity und ClientPostalCode in einer einzigen Spalte von Jaspis-Bericht.

Ich möchte alle diese drei Eigenschaften in einer einzigen Spalte anzeigen.

Antwort

1

können Sie nicht Verwendung "," Sie benötigen CustomExpression verwenden

Beispiel gewünschte Ergebnis

Zuerst fügen Sie Ihre Felder zu erreichen, zu melden, damit sie

drb.addField("ClientAddress", String.class.getName()); 
drb.addField("ClientCity", String.class.getName()); 
drb.addField("ClientPostalCode", String.class.getName()); 

zugegriffen werden Dann erstellen Sie die AbstractColumn mit einem CustomExpression

AbstractColumn columnClientLocation = ColumnBuilder.getNew().setCustomExpression(
    return new CustomExpression() { 
     public Object evaluate(Map fields, Map variables, Map parameters) { 
      String clientAddress = (String) fields.get("ClientAddress"); 
      String clientCity = (String) fields.get("ClientCity"); 
      String clientPostalCode = (String) fields.get("ClientPostalCode"); 
      return clientAddress + ", " + clientCity + ", " + clientPostalCode; 
     } 

     public String getClassName() { 
      return String.class.getName(); 
     } 
    } 
).build(); 
Verwandte Themen