IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Report d'une classe "complexe"


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut Report d'une classe "complexe"
    Bonjour,

    J'essaye de faire un rapport d'une classe que j'ai cree qui represente l'objet principale de mon application (un contrat) qui est represente par de multiples autre classes.
    Mon probleme est dans la creation du report.rdlc.
    J'ai un datasource representant le contrat avec toute sa hierarchie, et je souhaite pouvoir avoir ds mon report les elements des classes en dessous...
    Le probleme est que je n'arrive a afficher que les variables directement contenu ds Contrat...
    Exemple :
    +Contract
    |-+CompanyIdentification
    | |-Name
    |-Id
    Dans cet exemple Contract est une classe et CompanyIdentification aussi.
    J'arrive a afficher Id (directement ds Contract), mais pas Name (qui est dans CompanyIdentification)...

    Si vous avez une idee...

    Personnellement, je pense qu'il faudrait que j'ai une datasource de CompanyIdentification aussi pour que ca marche...

    En gros, il me faudrait une explication sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =First(Fields!Name.Value, "BusinessData_Contract_Contract")
    Ce langage bisarre...

  2. #2
    Membre confirmé
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Par défaut
    Salut,
    Je me souviens avoir eu du mal à obtenir ce que tu décris.
    cela fait un moment que je n'ai pas fait de rapport et je ne me souviens pas de comment (si c'est possible) de résoudre cela. le site http://www.gotreportviewer.com/ est plein de ressources et conseils
    Au final on a utilisé la bibliothèque de rapport de DevExpress mais on avait le même problème de navigation du graphe objet (nous n'utilisons pas de dataset).
    Une solution simple qui permet en plus de réutiliser les rapports est de créer un objet de presentation qui est adapté au rapport. dans ton cas j'imagine que ca serait quelque chose du gout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    namespace report{
      public class ContractReport {
        public String ContractID;         // avec des property pour le support du designer
        public String CompanyName;
        public String etc;
      }
    }
    Pour utiliser ton rapport tu créer un "assembleur" qui transfère les données depuis ton entité métier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    namespace business.report {
      public class ContractReportAssembler{
        public ContractReport WriteContractReportFrom(ContractEntity obj){
          //navigue le graph objet de obj pour mettre les bonnes valeurs dans le ContractReport
      }
    }
    Bien que cela semble fastidieux le résultat final est que le rapport est triviel et rapide à développer. Tu peux te concentrer sur le formatage des données pour l'impression dans une classe dédiée. le mapping vers cette classe est en fait rapide (même si il vaut mieux débrancher son cerveau quand il s'agit de mapper une petite centaine de propriétés )
    Bonus: le rapport est réutilisable par d'autre classes qui ont les données nécessaires. (dans mon cas il s'agissait d'un formulaire standard et les source de données sont maintenant multiples)

    en espèrant que ca t'aide
    --
    dom

  3. #3
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    Ouais, c'est pas bete !
    En tout cas, j'ai reussi a le faire marcher quand meme directement,
    au lieu d'ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =First(Fields!Name.Value, "BusinessData_Contract_Contract")
    il faut ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =First(Fields!subclass0.Value.subclass1....subclassn.property, "Tondataset")

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 23/05/2012, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo