【发布时间】:2013-02-03 02:33:05
【问题描述】:
我正在尝试使用内置的报告查看器控件来生成我的自定义报告。 Crystal Reports 很重,不能在所有客户端计算机上运行,因此我正在尝试构建 microsoft report。
此报告的目标是打印所有程序的列表。它们从数据库中获取并存储在一个列表中,如下所示:
Private Function ProgramDataset() As DataSet
Dim ds As DataSet = New DataSet("Programs")
Dim allPrograms As List(Of clsProgram) = clsProgram.GetAll()
'Build datatable
Dim table1 As DataTable = New DataTable("Programs")
table1.Columns.Add("ProgramName")
For Each program As clsProgram In allPrograms
table1.Rows.Add(program.Name)
Next
' Create a DataSet. Put the table in it
ds.Tables.Add(table1)
Return ds
End Function
所以我的数据集称为“程序”,它包含一个数据表,其中有一列名为“程序名称”。我加上程序的名字,最后返回这里要使用的数据集:
Dim ds As DataSet = ProgramDataset()
Dim p As New ReportParameter("programName", "Test")
frmReportViewer.ReportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local
frmReportViewer.ReportViewer1.LocalReport.ReportPath = "..\..\Reports\rptReport.rdlc"
frmReportViewer.ReportViewer1.LocalReport.SetParameters(p)
frmReportViewer.ReportViewer1.LocalReport.DataSources.Clear()
frmReportViewer.ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("Programs", ds.Tables(0)))
frmReportViewer.ReportViewer1.DocumentMapCollapsed = True
frmReportViewer.ReportViewer1.RefreshReport()
frmReportViewer.Show()
我的名为“rptReport”的报告包含一个名为“programName”的参数字段。现在我写在“测试”中,它可以工作。我的问题是,我希望它通过循环打印出所有程序名称,但我不太确定如何去做……
【问题讨论】:
-
你有很多事情要做——你不需要列表和数据集——你可以使用列表,或者强类型的数据集,但是你需要绑定报表在设计师中对此;这就是为什么您必须使用强类型 ds - 它必须在设计时可用。暂时忘记参数。
标签: vb.net parameters reportviewer