在运行时将数据源绑定/重新绑定到 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)

绑定到 BindingSource 时将新行插入 DataGridView

加载时将图像绑定到文件上传字段

加载时将调整大小功能绑定到图像

AngularJS:将布尔值绑定到单选按钮,以便在取消选中事件时将模型更新为 false