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

.NET .NET FastReport FastReport ASP.NET ASP.NET WebReport WebReport
3 июня 2025

Как импортозаместить генерацию документов в крупных компаниях: обзор продукта «МоиОтчеты Корпоративный Сервер»

В обзоре расскажем, как МоиОтчеты Корпоративный Сервер справляется с задачами крупного бизнеса и государственных предприятий в области автоматизированной генерации отчетов и документов.
30 мая 2025

Открываем файлы с расширением FP3 с помощью МоиОтчеты Вьювер

МоиОтчеты Вьювер — идеальное решение для работы с файлами FP3. Он позволяет легко открывать, просматривать, печатать и экспортировать отчёты.
21 апреля 2025

Работа с компонентом TfrShellTreeView в FastReport VCL

В данной статье мы рассмотрим компонент TfrShellTreeView. Он предназначен для отображения элементов файловой системы и частично является аналогом компонентов TDirectoryListBox, TDirectoryOutline и TShellTreeView.