在运行时将数据源绑定/重新绑定到 reportviewer vb.net
Posted
技术标签:
【中文标题】在运行时将数据源绑定/重新绑定到 reportviewer vb.net【英文标题】:binding/rebinding datasource to reportviewer vb.net at runtime 【发布时间】:2012-08-13 19:53:53 【问题描述】:我在 vb.net 中有一个 reportviewer,我有 2 个 .rdlc 文件,即 Report1 和 Report2。 它们的设计与表格相同,但 Report1 具有参数和过滤器,Report2 仅显示我记录中的所有内容。
我知道如何在设计时将数据源绑定到reportviewer,但我不知道如何在运行时执行此操作,我需要在第一次加载表单以及用户实际搜索某些内容时切换数据源。基本上这就是我的想法。
http://imageshack.us/photo/my-images/407/reportzm.png/
我需要在表单第一次加载时显示所有记录。所以我需要 Report2.rdlc 来处理没有过滤器的内容。
当我绑定了 Report1.rdlc 时,这就是我们所看到的
http://imageshack.us/photo/my-images/255/er11.png/
什么都不显示除了我们在文本框中输入一些值并点击搜索,记录将根据我们正在搜索的内容加载。
这里是代码。
Imports Microsoft.Reporting.WinForms
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'houseDataSet.Table1' table. You can move, or remove it, as needed.
Me.Table1TableAdapter.Fill(Me.houseDataSet.Table1)
Me.ReportViewer1.RefreshReport()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As New ReportParameter("ReportParameter1", TextBox1.Text)
ReportViewer1.LocalReport.SetParameters(New ReportParameter() a)
ReportViewer1.RefreshReport()
End Sub
End Class
【问题讨论】:
【参考方案1】:用过滤后的数据填充您的数据表。然后绑定它。
Me.Table1TableAdapter.Fill(Me.houseDataSet.Table1)
类似于:
Table1 = FilteredQueryAsDataTable
Me.Table1TableAdapter.Fill(Me.houseDataSet.Table1)
【讨论】:
【参考方案2】:此代码可能对您有所帮助 :)(vb.net 2008 代码) 我在按钮中使用此代码。所以当我按下它时;水晶报表将显示在水晶报表查看器上,并显示数据集中的数据。
Dim rpt As New CrystalReport1() 'The report you created.
Dim myConnection As SqlConnection
Dim MyCommand As New SqlCommand()
Dim myDA As New SqlDataAdapter()
Dim myDS As New Database1DataSet1() 'The DataSet you created.
Try
myConnection = New SqlConnection("type here your connection string")
MyCommand.Connection = myConnection
MyCommand.CommandText = "Select * from table"
MyCommand.CommandType = CommandType.Text
myDA.SelectCommand = MyCommand
myDA.Fill(myDS, "type here table name")
rpt.SetDataSource(myDS)
rptViewer.ReportSource = rpt
Catch Excep As Exception
MessageBox.Show(Excep.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
【讨论】:
以上是关于在运行时将数据源绑定/重新绑定到 reportviewer vb.net的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行时将 Kendo Grid 与 System.Data.DataTable 绑定
将数据绑定到 ReportViewer 控件的最佳方法是啥? (DataAdapter 与 DataReader)