Как ссылаться на параметр отчета SSRS по имени
У меня есть следующий код, который я пытаюсь программно создать отчет XML с помощью ReportViewer.
Dim outputPath As String = "C:\backup\test.xml"
Dim reportViewer As New ReportViewer()
Dim serverReport As ServerReport = reportViewer.ServerReport()
reportViewer.ServerReport.ReportPath = "/<path>/<report>"
reportViewer.ServerReport.ReportServerUrl = New Uri("http://<ip>/reportserver")
reportViewer.ProcessingMode = ProcessingMode.Local
reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = New System.Net.NetworkCredential("<user>", "<pwd>")
Dim parameters As New List(Of ReportParameter)
parameters.Add(New ReportParameter("LocationLocationParent", "[Location].[Location Parent].&[2]"))
parameters.Add(New ReportParameter("CalendarYear", "[Calendar].[Year].&[2014-01-01T00:00:00]"))
parameters.Add(New ReportParameter("StaffStaffName", "[Staff].[Staff Name].&[Bob Smith]"))
Try
serverReport.SetParameters(parameters)
Dim mimeType As String = ""
Dim encoding As String = ""
Dim extension As String = ""
Dim streams As String() = Nothing
Dim warnings As Warning() = Nothing
Dim xmlBytes As Byte() = serverReport.Render("XML", String.Empty, mimeType, encoding, extension, streams, warnings)
Using fs As FileStream = New FileStream(outputPath, FileMode.Create)
fs.Write(xmlBytes, 0, xmlBytes.Length)
fs.Close()
End Using
Catch reportEx As ReportServerException
Debug.Print(reportEx.Message)
End Try
где я устанавливаю параметр для LocationLocationParent, он не позволяет мне устанавливать значение по имени, только по некоторому типу индекса, который имеет каждое значение в списке. Раскрывающийся список самого отчета SSRS имеет древовидную структуру, примерно такую:
Parent1
Parent2
Parent4
Child1
Child2
Parent5
Child3
Child4
Child5
Parent3
Child5
Child6
Этот список не является истинным деревом, а просто просматривается как один. Это список с несколькими вариантами флажков. Например, я не могу установить для параметра значение "Child3" - только по его индексу, но в окне отчета в списке есть сотни значений. Если я установлю это так: "[Location].[Location Parent].&[Child3]" я получу следующее исключение
Для этого отчета требуется значение по умолчанию или пользовательское значение параметра отчета "LocationLocationParent". Чтобы запустить или подписаться на этот отчет, необходимо указать значение параметра. (RsReportParameterValueNotSet)
Обратите внимание, что параметр StaffStaffName сформирован не в древовидной структуре, а в виде списка, поэтому я могу правильно установить этот параметр.
Как я могу установить имя значения, которое я хочу для LocationLocationParent?