Как передать параметр в отчет с помощью URL

23.08.2017

Работая с отчетами в сети Интернет, обязательно появляется потребность передавать значения каких-либо параметров. Это, например, могут быть данные для фильтрации списков или информация о клиенте. Вызывая веб форму с отчетом, было бы удобно передать параметры с помощью URL (Universal Resource Locator). Сделать это достаточно просто.

Рассмотрим простейший пример. В шаблоне отчета есть два параметра: Param1 и Param2 типа строка:

 

Необходимо передать значения для этих параметров с помощью URL.

Создаем веб приложение ASP.Net WebForms. Размещаем на какой-либо странице компонент WebReport. Добавляем созданный шаблон отчета в проект. Кликаем правой кнопкой по папке App_Data и выбираем Add->Existing Item… . Затем находим файл отчета на жестком диске. И переходим к C# коду страницы. Прежде всего добавляем библиотеки:

1
2
using FastReport.Web;
using FastReport;

Я воспользовался событием страницы Load, так как на этом этапе отчет еще не отображается:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace URLParams
{
 public partial class About : Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {
//Get parameters from URL
 string param1 = Request.QueryString["param1"];
 string param2 = Request.QueryString["param2"];
//Load report fil into WebReport object 
 
 WebReport1.ReportFile = "App_Data/URLParams.frx";
//Set value to report parameters
 WebReport1.Report.SetParameterValue("Param1", param1);
 WebReport1.Report.SetParameterValue("Param2", param2);
 }
 }
}

Обратите внимание, что имя параметра в точности соответствует имени параметра в шаблоне отчета:

1
WebReport1.Report.SetParameterValue("Param1", param1);

 Сама же строка URL выглядит так:

http://localhost:51838/About?param1=Hello%20World!&param2=Good%20job!

Функция Request.QueryString(); находит параметр по имени и возвращает его значение.

 Второй вариант, без сохранения шаблона отчета в проекте: 

1
2
3
4
5
6
7
8
9
10
 protected void Page_Load(object sender, EventArgs e)
 {
 string param1 = Request.QueryString["param1"];
 string param2 = Request.QueryString["param2"];
 Report report = new Report();
 report.Load("J:/Program Files (x86)/FastReports/FastReport.Net/Demos/Reports/URLParams.frx");
 report.SetParameterValue("Param1", param1);
 report.SetParameterValue("Param2", param2);
 WebReport1.Report = report;
}

Здесь, мы создаем объект отчета, загружаем в него шаблон и назначаем параметры. После чего, присваиваем объект отчета объекту веб отчета. Простите на тавтологию. При этом, убедитесь, что свойство ReportResourceString у WebReport пусто.

Оба способа приводят к одинаковому результату:

 

Таким образом, буквально несколько строчек кода позволяют использовать в отчете параметры, передаваемые с помощью URL.

2 сентября 2024

Обзор облачного решения для создания и управления отчетами

МоиОтчеты Облако — это мощное облачное решение для создания и управления отчетами, обеспечивающее широкий спектр возможностей, от создания документов в различных форматах до интеграции с корпоративными системами.
12 августа 2024

Как собрать и установить плагин Postgres в FastReport .NET

В этой статье описывается подключение к базе посредством плагина FastReport .NET для дизайнера отчетов из Visual Studio через NuGet-сервер.
8 августа 2024

Как установить FastReport .NET и его компоненты в Windows

Пошаговая инструкция по онлайн и ручной установке через регистрационный код FastReport .NET и его компонентов в Windows.