我是RDLC报道的新手,我的要求很简单。 我设计了一个报告,并在该报告中设置了一些参数来填充动态数据。
现在我还要求动态显示表格。 所以我做了什么:
DataSet InvoiceSummaryDs = new DataSet();
DataTable table = new DataTable();
table.TableName = "summary";
table.Columns.Add( "name", typeof( string ) );
table.Rows.Add(Invoice.TotalBooking);
table.Rows.Add("£ " + Invoice.BillAmount);
table.Rows.Add("£ " + Invoice.BillAmount + " <br />" + "£ " + Invoice.VatAmount);
table.Rows.Add("£ " + Invoice.NetAmount);
InvoiceSummaryDs.Tables.Add(table);
ReportDataSource rptDataSource = new ReportDataSource("DSPrice", InvoiceSummaryDs.Tables[0]);
rv.LocalReport.DataSources.Add(rptDataSource);
rv.LocalReport.SetParameters(parms);
rv.LocalReport.Refresh();
所以在服务器端代码没有问题,但我在报告中收到错误: 错误13数据集“DS_NAME”指的是数据源“”,该数据源不存在。
错误14 Tablix“Tablix1”位于报表正文中,但报表中没有数据集。没有数据集的报告中不允许使用数据区域。
在rdlc文件中,我创建了一个名称为“DSPrice”且没有源的数据集,因为我想动态地从服务器端填充数据,而不是从这里。
我已经看过这个例子:
http://www.gotreportviewer.com/ 动态生成RDLC - 表
其中动态表绑定可以通过动态报表创建,但我不想创建动态报表。
任何人指导我的解决方案是什么? 任何帮助将不胜感激。
答案 0 :(得分:2)
最后,我自己解决了这个问题。
我的要求的简短摘要: 我想将数据集从代码绑定到我的RDLC报告表。
当我在RDLC报告中创建表时,它给了我上面提到的错误,为表提供数据源,我为什么感到困惑?我需要从C#编码中设置它。
然后我知道RDLC报告无法知道你是否要从代码提供数据源,除非你通过编码创建动态报告,我不想创建动态报告。
<强>解决方案:强>
1)创建您希望从代码传递的具有相同名称的占位符数据集 2)数据集必须具有相同的列和名称 3)将该数据集分配给报表中的表数据源 4)并使用相同的名称列从编码传递 5)通过这种方式,您不会收到该错误,您可以轻松地从代码中传递动态数据集。