ReportViewerのチャートは自動的にロードされません
-
16-09-2019 - |
質問
ReportViewerのチャートは、colbolistパラメーターが渡されたときに[レポート]ボタンをクリックしない限りロードしません。
選択したすべてのパラメーターは正しく渡され、レポートビューアーの[レポート表示]ボタンをクリックした後にのみロードをレポートします。 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つの大きな間違いをしていました。 Multivalueパラメーターを使用して、Combo Boxリストから選択したすべての値を1つの文字列として送信しようとしていました。
ただし、文字列配列を使用してマルチバリューパラメーターを保存し、セッション変数を使用して送信する必要がありました。
以下のコードを含めました。
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
ターゲットページでは、以前のコードのコードを示すように、すべてのセッション変数をパラメーターとして渡します。
所属していません StackOverflow