До сих пор мы можем передавать форму varialbe в наши отчеты через reportviewer.Как передать значение переменной session в параметр?
Ниже приведен код, действующий в настоящее время.
Markup
<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>
Серверный код:
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.
Как решить эту проблему?
'Сессия (с) "UserName") 'равно нулю –