到目前为止,我们能够通过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”)'无效肯定 –