winforms 将DataTable传递给ReportViewer

gcuhipw9  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(186)

我试图将一个数据表传递给一个reportviewer,我通过代码填充,有没有办法做到这一点?我尝试了这个,但没有发生:

Dim bs As BindingSource
        bs = New BindingSource()
        bs.DataSource = DataTablefillbycode
        Dim rs As ReportDataSource
        rs = New ReportDataSource()
        rs.Name = "Tabletest"
        rs.Value = bs
        form2.ReportViewer1.RefreshReport()
        form2.ReportViewer1.Reset()
        form2.ReportViewer1.LocalReport.ReportEmbeddedResource = "Test.Report1.rdlc"
        form2.ReportViewer1.LocalReport.DataSources.Clear()
        form2.ReportViewer1.LocalReport.DataSources.Add(rs)

        form2.ReportViewer1.RefreshReport()
      
        form2.ShowDialog()

字符串
PS:GridView可以很好地处理表“Tablefillbycode”


的数据

ifmq2ha2

ifmq2ha21#

按照以下步骤将数据表传递到您的报表:
1.我假设你在你的项目Test的根目录下创建了一个Report1.rdlc,所以它的嵌入资源的名字应该是Test.Report1.rdlc。我还假设你的Report1中的DataSet的名字是DataSet1
1.在Form2上放置一个报表查看器,并将其Dock属性设置为Fill,将其Modifier属性设置为Public
1.在Form1中,我假设你有一个DataGridView1,你想把它填充到Form_Load中,你将使用与创建报告相同的查询。
1.在Form1中,我假设你有一个Button1,当你点击Button1时,你想显示Form2,你想把DataGridView1的数据传递给它。
不要忘记在Form1Imports Microsoft.Reporting.WinForms

产品代码:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim cn = "data source=(localdb)\v11.0;initial catalog=TestDB;integrated security=True;"
    Dim cmd = "SELECT Id,Name FROM Category"
    Dim adapter = New SqlDataAdapter(cmd, cn)
    Dim table = New DataTable()
    adapter.Fill(table)
    Me.DataGridView1.DataSource = table
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim form2 = New Form2()
    Dim rds= New ReportDataSource("DataSet1", Me.DataGridView1.DataSource)
    form2.ReportViewer1.LocalReport.DataSources.Clear()
    form2.ReportViewer1.LocalReport.DataSources.Add(rds)
    form2.ReportViewer1.LocalReport.ReportEmbeddedResource = "Test.Report1.rdlc"
    form2.ShowDialog()
End Sub

字符串

截图:


的数据

运行时从DataGridView创建RDLC报告有什么想法吗?

你可能会对下面的帖子感兴趣,它解释了如何在运行时动态地将任何DataGridView转换为RDLC报告以用于打印等目的。这篇帖子在GitHub repo中提供了完整的代码和下载链接:

相关问题