Работая с отчетами в сети Интернет, обязательно появляется потребность передавать значения каких-либо параметров. Это, например, могут быть данные для фильтрации списков или информация о клиенте. Вызывая веб форму с отчетом, было бы удобно передать параметры с помощью 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!¶m2=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.