Как передать параметр в отчет с помощью 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.

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.