Настройка параметров отчета Telerik из приложения Silverlight ReportViewer - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть приложение Silverlight, в котором содержится Telerik ReportViewer.Я хочу выбрать отчет и значения параметров в коде и передать эту информацию в средство просмотра отчетов.Кто-нибудь знает как это сделать?Все, что я могу найти, это установить для свойства Report имя отчета.

1 Ответ

3 голосов
/ 25 мая 2011

Если вы определяете обработчик для события RenderBegin ReportViewer, вы получаете параметр RenderBeginEventArgs с пустым свойством NameValueDictionary с именем ParameterValues.

Вы можете добавить пары {имя, значение} в эту коллекцию, и они, похоже, попали в коллекцию параметров отчета.

Например, у меня есть два параметра отчета с именами «InputElementID» и «ReportPeriod». Мой обработчик RenderBegin выглядит примерно так:

    private void ReportViewer_RenderBegin(object sender, Telerik.ReportViewer.Silverlight.RenderBeginEventArgs args)
    {
        args.ParameterValues.Add("InputElementID", this.elementId);
        args.ParameterValues.Add("ReportPeriod", "fortnight");
    }

Но это поднимет еще одну проблему: как вы можете сделать так, чтобы отчет повторно отображал себя с новыми параметрами в ответ на взаимодействие с пользователем? Например, в моем случае у меня была настроена страница с основными данными, с RadTreeListView слева и моим ReportViewer справа. Мне нужно было заставить мой ReportViewer пересчитывать себя каждый раз при изменении выбранного элемента.

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

Моим хакерским решением было установить свойство ReportServiceUri, когда я хотел форсировать изменение.

// No change, just forces the ReportViewer to re-render itself
this.ReportViewer.ReportServiceUri = new Uri("../ReportService.svc", UriKind.RelativeOrAbsolute);

Наверное, должен быть лучший путь, но это должно помочь вам.

...