JasperReports: en Passant d'une liste de listes comme une source de données
J'ai besoin pour remplir un peu les sous-rapports avec les listes d'objets différents. Fondamentalement vous permet de dire que j'ai les éléments suivants:
Sous-rapport sur les Véhicules d'occasion
Sous-rapport sur les Véhicules neufs
J'ai créer un véhicule classe d'haricot avec des variables comme des chaînes de caractères et de créer des méthodes getter et setter pour la même chose. Ensuite dans mon datasource je passe dans un List<List<String>>
comme detailRows. detailRows contient une liste pour les nouveaux véhicules et une liste de véhicules d'occasion. Donc disons que, je passe detailRows dans la source de données.
La Question est comment puis-je passer ces deux listes pour les deux sous-rapports? Puis-je utiliser
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{newVehiclesList})
comme source de données pour le sous-rapport 1 et
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{usedVehiclesList})
tant que source de données pour le sous-rapport 2?
Est-il autre chose qui doit être fait en dehors de ce que j'ai mentionné? Ai-je besoin pour créer et transmettre des variables? Est l'utilisation appropriée de la liste de listes comme je l'ai indiqué ci-dessus ou est-il $F{detailRows}.get(0)
?
J'ai créé un champ detailRows dans le rapport principal type de liste. J'ai ensuite passer à la sous-expression de source de données, new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{detailRows}
Est-il possible que je puisse passer l' newVehiclesList
de detailRows à la sous-rapport?
Merci!
Vous devez vous connecter pour publier un commentaire.
De la sélection de votre sous-rapport, vous pouvez définir la propriété "type de Connexion", comme "l'Utilisation d'une source de données d'expression", et à l'intérieur de la propriété "Source de Données de l'Expression" vous mettez ceci:
Où votre "yourFieldHere" est une liste (n'oubliez pas de définir le Champ "Classe" à l'intérieur de votre champ de propriétés java.util.Liste ainsi)
Ok, alors vous avez besoin de créer deux champs de la Classe de Champ comme java.util.Liste, un pour chaque liste (newVehiclesList et usedVehiclesList).
Mettre vos deux sous-états où vous le souhaitez et cliquez sur chacun d'eux faisant les étapes suivantes:
Changer le "type de Connexion" à "Utiliser une source de données de l'expression" puis la "Source de Données de l'Expression" à nouveau net.sf.jasperreports.moteur.les données.JRBeanCollectionDataSource($F{yourField})
Fait.
ps: afin d'utiliser les champs à l'intérieur de votre newVehiclesList et usedVehiclesList vous devez les créer à l'intérieur de leur propre sous-rapports.
j'ai été les mêmes problèmes avec vous et je l'ai résolu en utilisant la Liste des balises de jasper, j'ai utilisé de la source de données dans ma classe java, par exemple:
le paramètre.put("Maliste", nouvelle JRBeanCollectionDataSource(ListObjects));
dans JRXML
Dans palete de Jasper, choisissez la LISTE de balises et de le glisser dans votre relatory
après avoir choisi l'
maintenant, allez dans le contour de jasper, et
- propriétés du jeu de données
- de modifier et de filtre de requête ... ...
- javabean
- recherche de classe I à l'aide d'eclipse, il est donc facile à fouiller dans ma classe)
- ajouter des champs à utiliser