到目前爲止,我們能夠通過reportviewer將形式變量傳遞給我們的報告。如何將值作爲會話變量傳遞給參數?
以下是我們目前的代碼,效果很好。
標記
<table>
<tr>
<td align="center" colspan="2">
<asp:Label runat="server" ID="lblUser" Text="Enter UserName" />
</td>
</tr>
<tr>
<td align="center">
UserName: <asp:TextBox runat="server" ID="UserName" Width="75px" />
</td>
<td>
<asp:Button runat="server" ID="btnGetUser" Text="Print" />
</td>
</tr>
</table>
Server代碼:
Sub Run_Report(ByVal sel As String)
ReportViewer1.Reset()
ReportViewer1.LocalReport.DataSources.Clear()
Dim params_user(0) As ReportParameter
Select Case which.Value
Case "R"
ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", ObjectDataSource1.ID))
ReportViewer1.LocalReport.ReportPath = "GetReceits.rdlc"
ReportViewer1.LocalReport.Refresh()
ReportViewer1.LocalReport.EnableExternalImages = True
params_user(0) = New ReportParameter("UserName", UserName.Text, False)
ReportViewer1.LocalReport.SetParameters(params_user)
End Select
End Sub
然而,由於安全方面的原因,我們一直要求通過會話變量來報告。
這樣,用戶就不必輸入用戶名來打印報告。
我試圖改變這一行:
params_user(0) = New ReportParameter("UserName", UserName.Text, False)
到
params_user(0) = New ReportParameter("UserName", Session("UserName").ToString, False)
但是當我試圖運行它,我得到:
Object reference not set to an instance of an object.
我該如何解決這個問題?
'Session( 「UserName」)'無效肯定 –