【发布时间】:2016-09-08 13:16:39
【问题描述】:
我正在尝试使用 ReportViewer 来运行包含从 datagridview 填充的数据集的报表。我可以填充数据集,但是当我运行报告时,它只显示第一行。我对此进行了无数小时的搜索,但似乎没有任何效果。
- 我已确保 =First(...) 已从我的报告字段表达式中删除
- 我认为问题与数据集的 XML 有关,但我不是很熟悉。
- 这只是一个例子,一旦我弄清楚了,我就可以将我的知识转移到我的实际项目中。
这是我所拥有的:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
dgv.Columns.Add("FirstName", "First Name")
dgv.Columns.Add("LastName", "Last Name")
dgv.Rows.Add("John", "Smith")
dgv.Rows.Add("Jane", "Doe")
createData()
End Sub
Private Sub createData()
Dim dt As New DataTable("namesTable")
dt.Columns.Add("FirstName")
dt.Columns.Add("LastName")
For Each row As DataGridViewRow In dgv.Rows
dt.Rows.Add(row.Cells(0).Value, row.Cells(1).Value)
MsgBox(row.Cells(0).Value & " " & row.Cells(1).Value)
Next
MsgBox(dt.Rows.Count)
DataSet1.Tables.Add(dt)
MsgBox(DataSet1.GetXml)
Dim DSReport As New ReportDataSource()
DSReport.Name = "DataSet1"
DSReport.Value = DataSet1.Tables("namesTable")
ReportViewer.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local
ReportViewer.LocalReport.ReportEmbeddedResource = "Report1.rdlc"
ReportViewer.LocalReport.DataSources.Clear()
ReportViewer.LocalReport.DataSources.Add(DSReport)
ReportViewer.LocalReport.Refresh()
ReportViewer.RefreshReport()
End Sub
当我添加到 dt 时,我的 MsgBox 消息正确地显示了我的两个名字。 MsgBox dt 计数为 2,因此添加了我的两个名称。
Dataset XML 显示了这一点,我认为这是问题所在,但我不知道如何解决:
然后报告显示:
感谢您的帮助,这让我发疯了。
谢谢!
【问题讨论】:
标签: vb.net datagridview dataset reportviewer