Проблема: У меня есть веб-приложение ASP.NET, которое должно представлять отчеты SQL Server Reporting Services. Однако, интерфейс параметров по умолчанию, предоставленный элементом управления ReportViewer, не соответствует цветам сайта. Есть ли способ передать параметры отчета в экземпляр Reporting Services без использования подсказок параметров?
Решение: К счастью, есть простой способ передачи параметров отчета в экземпляр Reporting Services. Допустим, у нас есть веб-сайт, который отслеживает ежечасные метеорологические наблюдения для нескольких аэропортов в районе. Мы можем предложить отчет с использованием Reporting Services, который позволяет пользователям выбирать местоположение, дату начала и дату окончания для отображения желаемых наблюдений.
Сначала откройте Visual Studio и страницу, на которой вы хотите добавить отчет. Во вкладке “Data” панели инструментов вы найдете элемент управления ReportViewer. Если вы еще не установили его, вы можете сделать это из панели инструментов. После установки элемента управления вы можете начать создание страницы.
Для этого примера создадим простую страницу с тремя текстовыми полями, двумя кнопками изображений для календарей и кнопкой ссылки, которая будет передавать параметры и отображать отчет. Перетащите элемент управления ReportViewer на страницу в режиме “Design”. Это автоматически добавит ссылку на пространство имен Microsoft.Reporting.WebForms на страницу.
Одна из настроек, которую можно добавить к элементу управления ReportViewer, это режим обработки. Этот элемент управления может отображать отчеты из локального источника (RDLC) или удаленного источника (экземпляр SQL Server Reporting Services). В данном случае у нас есть доступный экземпляр Reporting Services, поэтому мы будем использовать удаленный режим обработки.
Теперь давайте напишем код, который будет выполняться при нажатии кнопки “Просмотреть отчет”. Сначала объявим обобщенный список параметров отчета, используя пространства имен System.Collections.Generic и Microsoft.Reporting.WebForms. В отчете SQL Server Reporting Services есть три параметра: SiteID, StartDate и EndDate. В коде используйте фактический URL-адрес сервера отчетов (например, “http://www.example.com/reportserver”) и добавьте параметр отчета для каждого из них в обобщенный список параметров. Укажите путь к отчету и используйте функцию ServerReport.SetParameters для применения параметров отчета к фактическим параметрам отчета в отчете Reporting Services.
Protected Sub cmdGetReport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdGetReport.Click
Dim colRP As New System.Collections.Generic.List(Of Microsoft.Reporting.WebForms.ReportParameter)
colRP.Add(New Microsoft.Reporting.WebForms.ReportParameter("SiteID", UCase(txtSiteID.Text.Trim)))
If IsDate(txtStartDate.Text.Trim) Then
Dim dteStart As Date = txtStartDate.Text.Trim
colRP.Add(New Microsoft.Reporting.WebForms.ReportParameter("StartDate", Right("0" & dteStart.Month, 2) & "/" & _
Right("0" & dteStart.Day, 2) & "/" & dteStart.Year))
End If
If IsDate(txtEndDate.Text.Trim) Then
Dim dteEnd As Date = txtEndDate.Text.Trim
colRP.Add(New Microsoft.Reporting.WebForms.ReportParameter("EndDate", Right("0" & dteEnd.Month, 2) & "/" & _
Right("0" & dteEnd.Day, 2) & "/" & dteEnd.Year))
End If
rvWeather.ServerReport.ReportServerUrl = New Uri("http://www.example.com/reportserver")
rvWeather.ServerReport.ReportPath = "/Weather/Site Report"
rvWeather.ServerReport.SetParameters(colRP)
rvWeather.ServerReport.Refresh()
rvWeather.Visible = True
End Sub
Когда пользователь достигает страницы, он может ввести необходимые параметры и нажать кнопку “Просмотреть отчет”. Отчет будет отображен с указанными параметрами.
Используя этот метод, вы можете настроить интерфейс параметров, чтобы он соответствовал цветам и дизайну вашего сайта, обеспечивая единый пользовательский опыт.