我想创建一个包含来自我的 Google 工作表数据的订单数据的报告,并通过报告查看器控件显示此报告。我正在使用 Microsoft 报告 rdlc 扩展来创建它。
因为 Google 工作表数据不是关系数据库,所以我使用对象创建了一个虚拟数据集(我创建了一个具有 2 个属性的简单类:OrderID 和 OrderName),并将 tablix 与数据集连接起来。
但是由于用户的选择,我想动态地将行或列添加到 tablix,因此我正在尝试为 reportviewer 控件创建一个新的数据源。问题是当我的代码中的数据源名称与 2report.rdlc 文件中的数据源(“DataSet1”)匹配时,它起作用了。但是,如果我尝试创建一个具有不同名称(如“NewData”)的新数据源,则会出现如下错误:“数据源实例尚未分配给数据集‘Dataset1’”。
我做错了什么吗? 如果您有任何想法,请告诉我。
提前致谢。
这是我的代码:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Create a new DataTable object
Dim dataTable As New DataTable("myTable")
Dim dtSet As New DataSet("NewdtSet")
' Add columns to the DataTable
dataTable.Columns.Add("OrderID", GetType(Integer))
dataTable.Columns.Add("OrderName", GetType(String))
dataTable.Columns.Add("OrderContent", GetType(String))
' Add rows to the DataTable
dataTable.Rows.Add(1, "Row1")
dataTable.Rows.Add(2, "Row2")
dataTable.Rows.Add(3, "Row3", "ABCMartShoes")
dtSet.Tables.Add(dataTable)
Dim dataSource As New ReportDataSource("DataNew", dtSet.Tables("myTable"))
ReportViewer1.LocalReport.DataSources.Clear()
ReportViewer1.LocalReport.DataSources.Add(dataSource)
Me.ReportViewer1.RefreshReport()
End Sub
这是我的虚拟数据集
更新: 这是我运行上面的代码时的报告 tablix(我将 ReportDataSource 名称更改为“DataSet1”)。大家可以看到,我尝试添加新的列“Order Content”,但是没有显示在报告中
您需要确保在 RDLC 文件中定义的数据集包含两个表的所有字段。字段不必在报告中实际使用,只需定义即可。因此,当您更改为 DataNew 表时,字段 OrderContent 位于 RDLC 文件中。如果你这样做,你需要做的就是解决以下问题:
Dim dataSource As New ReportDataSource("DataNew", dtSet.Tables("myTable"))
到
Dim dataSource As New ReportDataSource("DataSet1", dtSet.Tables("myTable"))