VS 2013 ReportViewer仅显示第一行

时间:2016-05-12 15:30:18

标签: vb.net datagridview dataset reportviewer

我正在尝试使用ReportViewer来运行包含从datagridview填充的数据集的报表。我可以填充数据集,但是当我运行报表时,它只显示第一行。我已经做了无数个小时的搜索,似乎什么都没有用。

  • 我确保=从报告字段表达式中删除了第一个(...)
  • 我认为这个问题与数据集的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,所以添加了两个名字。

数据集XML显示了这个,我认为是问题,但我不知道如何修复它:

DataSet1 XML

报告随后显示:

ReportViewer

感谢您的帮助,这让我发疯。

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来您的数据源不对,为什么不使用您刚刚创建的数据集。这段代码适合我:

        ReportViewerHeader.LocalReport.DataSources.Clear()
        Dim rds As New Microsoft.Reporting.WebForms.ReportDataSource("namesTable", dt)
        ReportViewerHeader.LocalReport.ReportPath = "Report1.rdlc"
        ReportViewerHeader.LocalReport.DataSources.Add(rds)
        ReportViewerHeader.DataBind()
        ReportViewerHeader.LocalReport.Refresh()