2010-04-07 6 views
0

Je veux imprimer un tableau en document pdf. J'ai besoin d'utiliser deux sources de données javabean pour remplir les données de la table. J'ai donc utilisé deux sous-rapports en même temps pour mapper les données. Le problème auquel je suis confronté est que je ne pouvais pas organiser le contenu du second sous-rapport correspondant au premier sous-rapport.Si la largeur d'un champ est grande dans le premier sous-rapport, deuxième rapport ne sera pas aligner correctement correspondant au premier subreport.The ci-dessous échantillon donnera une bonne idée sur le problèmeComment résoudre ce problème dans JasperReport?

Ma sortie attendue

 SubReport1      SubReport2 

    S.No  Value     S.No  Value 

    1  value from first   1   value from second bean 
      java bean value 
      bean 

    2  value from first bean 2   value from second bean 

Résultat que je reçois

 SubReport1     SubReport2 

    S.No  Value    S.No  Value 

    1  value from first  1   value from second bean 
     java bean value  2   value from second bean  
      bean 

    2  value from first bean 

S'il vous plaît veuillez m'aider à régler ce problème.

+0

Le titre de la question n'est pas clair du tout. Quelqu'un veut-il aider? (Je n'ai pas assez de réputation.) –

Répondre

0

Les sous-rapports sont similaires aux arguments de fonction. Ils sont évalués avant d'appeler la fonction et ne se connaissent pas les uns les autres. Il y a deux solutions pour votre problème:

  1. supprimer les sous-rapports et rendre données dans le rapport principal
  2. ajouter quelques caractères non imprimables aux plus courte de deux valeurs qui sont censés être rendus dans le même row
+0

Salut Boris merci pour votre intérêt. En fait, j'utilise JavaBeanDatasource et mon bean retournant deux ArrayList.so pour remplir ces valeurs ArryList j'ai utilisé Subreport. J'espère que nous ne pouvons pas remplir directement ArrayList à l'intérieur mainreport directement.Nous ne pouvons pas utiliser char non imprimable aussi parce que parfois la deuxième valeur de sous-rapport peut être grande que la première.Il y a une autre possibilité ?. – Kumar

1

Comme @Boris a suggéré de supprimer les sous-rapports.

Puisque vous utilisez BeanDatasource alors vous pouvez mettre toute l'affaire et la logique dans votre code et donner au rapport une liste toute faite.

Faites un nouvel objet, appelons-le ReportRow, n'utilisez pas ce nom bien sûr :).

public class ReportRow{ 
    int sNumber1; 
    int sNumber2: 
    String value1: 
    String value2: 
    //setters and getters 
} 

Maintenant, créez un nouveau ArrayList<ReportRow> et passer à comme source de données.

HTH.

+0

il semble que kumar n'a pas un accès à la source qui émet ces deux tableaux –