2009-11-17 8 views
2

Je crée un assemblage personnalisé à référencer dans un rapport. J'aimerais pouvoir accéder à l'objet Report à partir de cet assemblage, afin de pouvoir accéder aux paramètres du rapport et aux autres éléments auxquels je peux accéder dans le code RDL personnalisé en utilisant Report.stuff.Assemblage personnalisé Reporting Services: accès aux paramètres de rapport

Je dois évidemment référencer certains services de reporting pour faire cela, mais je ne sais pas lequel. J'ai essayé Microsoft.ReportingServices.ProcessingCore, car il a une classe Report avec différentes propriétés comme Parameters etc., mais quand j'essayé de passer l'objet Report de la section de code personnalisé RDL à ma classe, je suis arrivé cette erreur:

Unable to cast object of type 'ReportExprHostImpl' to type 'Microsoft.ReportingServices.ReportRendering.Report'.

Il y a aussi un assemblage qui expose diverses interfaces et une classe abstraite Report, mais il ne semble pas avoir les paramètres en tant que propriété. Donc, la question est: comment pourrais-je réaliser cela, quel assemblage dois-je référencer? Et si possible, puis-je accéder à l'objet Report sans passer depuis le RDL, à savoir pour que je puisse simplement enregistrer une instance de ma classe et plus tard écrire des expressions comme:

=Utils.DoStuffWhileReferencingReportParameters(Fields!field.Value)

Répondre

0

référence ces deux dll dans votre bibliothèque: Microsoft.ReportingServices.ProcessingCore Microsoft.ReportingServices.ProcessingObjectModel

Placez le code suivant dans votre bibliothèque (par exemple)

using Microsoft.ReportingServices.ReportProcessing.ReportObjectModel; 

public static string Test(Parameters item) 
{ 

    return item ["my_parameter_name"].Value.ToString(); 
} 

ici s un exemple d'expression à utiliser dans votre fichier RDL:

=MyNameSpace.MyStaticClass.Test(Parameters) 
+0

Je ne pense pas que référencer ProcessingCore est nécessaire et j'ai découvert que référencer le modèle d'objet ne résout pas le problème exact que j'avais, en fait j'ai trouvé Il est fondamentalement impossible de référencer les paramètres dans la DLL sans les passer du RDL - c'est ce que j'ai fini par faire, j'ai fait que le constructeur accepte la collection Parameters. De toute façon, pour votre effort - j'accepte votre réponse :) –

Questions connexes