Диаграмма в Reportviewer не загружается автоматически - PullRequest
0 голосов
/ 16 июля 2009

Диаграмма в Reportviewer не загружается, пока я не нажму кнопку просмотра отчета при передаче параметров комболиста.

Все выбранные параметры передаются правильно и отчет загружается только после нажатия кнопки «Просмотр отчета» в средстве просмотра отчетов. У меня есть это средство просмотра отчетов на странице ASP.NET, и мои параметры передаются с использованием переменных сеанса, созданных из другой страницы ASP.NET, в которой есть форма параметров, откуда пользователь вводит и выбирает входные параметры.

В качестве входных параметров у меня есть даты (выбор даты) и названия компаний (комбинированный список с множественным выбором с флажками).

Отчет работает абсолютно нормально, если параметры отчета не получены из комбинированного списка с множественным выбором.

Вот мой код, который я использовал для установки параметров отчета в качестве переменных сеанса.

Session("labname") = Nothing
    Session("fractionid") = FractionDropDownList.SelectedValue
    For intloopindex As Integer = 0 To LabNamesCheckBoxList.Items.Count - 1
        If LabNamesCheckBoxList.Items(intloopindex).Selected Then
            Session("labname") &= LabNamesCheckBoxList.Items(intloopindex).Text & ControlChars.CrLf
        End If
    Next
    Session("sdate") = sdate.text
    Session("edate") = edate.text

Вот мой код для передачи этих переменных сеанса в качестве параметров элементу управления Reportviewer.

Если не IsPostBack, то

        Dim fractionparam As String
        Dim sdateparam As String
        Dim edateparam As String
        Dim regionparam As String
        Dim labnameparam As String

        regionparam = Session("regionid")
        fractionparam = Session("fractionid")
        labnameparam = Session("labname")
        sdateparam = Session("sdate")
        edateparam = Session("edate")


        Dim rp(3) As Microsoft.Reporting.WebForms.ReportParameter

        'rp(0) = New Microsoft.Reporting.WebForms.ReportParameter("regionid", regionparam)
        rp(0) = New Microsoft.Reporting.WebForms.ReportParameter("fractionid", fractionparam)
        rp(1) = New Microsoft.Reporting.WebForms.ReportParameter("labname", labnameparam)
        rp(2) = New Microsoft.Reporting.WebForms.ReportParameter("sdate", sdateparam)
        rp(3) = New Microsoft.Reporting.WebForms.ReportParameter("edate", edateparam)

        Me.ReportViewer1.ServerReport.SetParameters(rp)

    End If

1 Ответ

0 голосов
/ 18 июля 2009

Я наконец-то получил решение.

Я делал одну серьезную ошибку со своим старым кодом. С многозначным параметром я пытался отправить все выбранные значения из списка комбинированного списка одной строкой.

Но мне следовало использовать строковый массив для хранения многозначных параметров и отправки их с помощью переменной сеанса.

Включен код ниже.

dim count as integer
For intloopindex As Integer = 0 To LabNamesCheckBoxList.Items.Count - 1
        If LabNamesCheckBoxList.Items(intloopindex).Selected Then
          count=count+1
        End If    
dim labnames(count) as array

dim j as integer
j=0

for i as integer=0 to labnamescheckboxlist.items.count-1
labnames(j)=labnamescheckboxlist.item(i).text
j=j+1
next

    Session("labname") = Nothing
    Session("labname")=labnames

    Session("fractionid") = FractionDropDownList.SelectedValue
    Session("sdate") = sdate.text
    Session("edate") = edate.text

На целевой странице передайте все переменные сеанса в качестве параметров, как показано в коде ранее.

...