将 DataTable 传递给 ReportViewer
Pass DataTable to ReportViewer
我正在尝试将数据table 传递给我通过代码填写的报告查看器,有没有办法做到这一点?我试过了,但什么也没发生:
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 与 table“Tablefillbycode”
配合使用效果很好
按照以下步骤将数据 table 传递到您的报告:
我假设您在项目 Test
的根目录中创建了一个 Report1.rdlc
,因此其嵌入资源的名称将是 Test.Report1.rdlc
。另外我想 DataSet
在你的 Report1
中的名字是 DataSet1
.
在您的 Form2
上安装一个报告查看器并将其 Dock
属性 设置为 Fill
并设置其 Modifier
属性 到 Public
.
在 Form1
我想你有一个 DataGridView1
你想把它填入 Form_Load
并且你将使用你用于的相同查询正在创建报告。
在 Form1
我想你有一个 Button1
当你点击 Button1
并且你想通过DataGridView1
的数据。
别忘了在 Form1
中 Imports 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
截图:
我正在尝试将数据table 传递给我通过代码填写的报告查看器,有没有办法做到这一点?我试过了,但什么也没发生:
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 与 table“Tablefillbycode”
配合使用效果很好按照以下步骤将数据 table 传递到您的报告:
我假设您在项目
Test
的根目录中创建了一个Report1.rdlc
,因此其嵌入资源的名称将是Test.Report1.rdlc
。另外我想DataSet
在你的Report1
中的名字是DataSet1
.在您的
Form2
上安装一个报告查看器并将其Dock
属性 设置为Fill
并设置其Modifier
属性 到Public
.在
Form1
我想你有一个DataGridView1
你想把它填入Form_Load
并且你将使用你用于的相同查询正在创建报告。在
Form1
我想你有一个Button1
当你点击Button1
并且你想通过DataGridView1
的数据。
别忘了在 Form1
Imports 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
截图: