Pass DataTable to ReportViewer

前端 未结 1 502
梦如初夏
梦如初夏 2020-12-04 03:06

I am trying to pass a datatable to a reportviewer wich I fill it by code , is there a way to do that ? i try this but nothing happen

Dim bs As BindingSource
         


        
相关标签:
1条回答
  • 2020-12-04 03:31

    Follow these steps to be able to pass data table to your report:

    1. I suppose you created a Report1.rdlc in root of your project Test, so the name of its embedded resource would be Test.Report1.rdlc. Also I suppose the name of DataSet in your Report1 is DataSet1.

    2. Put a report viewer on your Form2 and set its Dock property to Fill and set its Modifier property to Public.

    3. In Form1 I suppose you have a DataGridView1 that you want to fill it in the Form_Load and you will use the same query that you used for creating report.

    4. In Form1 I suppose you have a Button1 that you want to show Form2 when you click on Button1 and you want pass the data of DataGridView1 to it.

    Don't forget to Imports Microsoft.Reporting.WinForms in Form1

    Code:

    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
    

    Screenshot:

    0 讨论(0)
提交回复
热议问题