2008-11-05 11 views
2

J'essaie d'utiliser un objet métier que je transmets à report.rdlc. Les propriétés de mon objet ne sont pas directement exposées. Les propriétés dont j'ai besoin sont intégrées dans un autre objet à l'intérieur de l'objet de niveau supérieur. Comme il s'agit d'un projet WCF, je ne peux pas contrôler ce qui se passe à la fin du serveur. Je suis juste en mesure de demander ces objets ou insérer/mettre à jour/supprimer leurs informations de la base de données. C'est fait de cette manière que le back-end peut utiliser plusieurs types de base de données.Propriétés incorporées dans un autre objet

Voici ce que je peux voir après avoir ajouté mon objet métier comme DataSource:

-BusinessObject 
-CustomerInfo 
    -ClientName 
    -ColumnName 
    -DisplayName 
    -FieldName 
    -IsNull 
    -KeyColumn 
    -SenondKeyColumn 
    -StringValue 
    -ClientID 
    -ColumnName 
    -DisplayName 
    -FieldName 
    -IntValue 
    -IsNull 
    -KeyColumn 
    -SenondKeyColumn 
    +ClientAddress 
    +Instrument 
    +Telephone 

etc etc

Je dois être en mesure d'afficher, par exemple, le champ ClientName.StringValue. Si je fais glisser le champ que je veux sur le rapport que je reçois:

=First(Fields!StringValue.Value) 

Cela n'affiche rien lorsque le rapport est exécuté, je suppose parce qu'il ne peut pas qualifier ce StringValue il parle et il pourrait y être nombreux.

Si je tente glisser l'objet ClientName je reçois:

=First(Fields!ContactName.Value) 

Cependant, cela donne:

#ERROR 

Lorsque le rapport est exécuté.

j'aurais pensé que vous pourriez utiliser:

=First(Fields!ClientName.StringValue.Value) 

mais cela ne m'a même laisser construire.

Répondre

1

Le problème était que l'information n'était pas au niveau de la racine. Je me suis débrouillé quand même.

=First(Fields!ClientName.Value.StringValue, "BusinessObject_CustomerInfo") 

J'ai maintenant une bonne idée du composant ReportViewer.

+0

Est-ce que quelqu'un fera ceci comme réponse? –

0

Si vous définissez la source de données sur l'instance CustomerInfo (ou sur la liste) renvoyée par le service, elle devrait fonctionner. Le contrôle ReportViewer peut être un peu compliqué lorsque vous commencez à gérer des hiérarchies d'objets, mais vous n'avez rien à faire de fou ou de spécial si toutes les informations sont au niveau de la racine.