2009-11-17 1 views
2

Я пишу настраиваемую сборку для ссылки в отчете. Я хотел бы иметь доступ к объекту Report из этой сборки, чтобы затем получить доступ к параметрам отчета и другим материалам, к которым я могу получить доступ в пользовательском RDL-коде, используя Report.stuff.Пользовательская сборка служб отчетов: доступ к параметрам отчета

Мне явно нужно обратиться к некоторым службам служб отчетов, чтобы сделать это, но я не могу понять, какой из них. Я пытался Microsoft.ReportingServices.ProcessingCore, так как он имеет класс Report с различными свойствами, как Parameters и т.д., но когда я пытался передать Report объект из пользовательского кода раздела RDL в мой класс, я получил эту ошибку:

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

Там в также сборку, которая предоставляет различные интерфейсы и абстрактный класс Report, но у него нет параметров как свойства.

Итак, вопрос в том, как я могу достичь этого, какую сборку мне нужно сослаться? И если это возможно, я могу получить доступ к Report объекту, не передавая его из RDL, то есть так, что я мог бы просто зарегистрировать экземпляр моего класса, а затем писать выражения типа:

=Utils.DoStuffWhileReferencingReportParameters(Fields!field.Value)

ответ

0

ссылочных этих двух библиотек DLL в вашей библиотеке: Microsoft.ReportingServices.ProcessingCore Microsoft.ReportingServices.ProcessingObjectModel

Поместите следующий код в вашей библиотеке (в качестве примера)

using Microsoft.ReportingServices.ReportProcessing.ReportObjectModel; 

public static string Test(Parameters item) 
{ 

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

Здесь приведен пример выражения для использования в файле RDL:

=MyNameSpace.MyStaticClass.Test(Parameters) 
+0

Я не думаю, что ссылки ProcessingCore необходимо, и я обнаружил, что ссылки на объектную модель не решает проблему точной я, на самом деле я нашел в принципе невозможно ссылаться на параметры в dll, не передавая их из RDL - это то, что я закончил, я сделал конструктор, который принял коллекцию Parameters. В любом случае, для ваших усилий - я принимаю ваш ответ :) –