0

我在 MSDN 论坛上发布了这个问题

http://social.msdn.microsoft.com/Forums/en/vsreportcontrols/thread/f00e3406-354d-4f54-acce-7b7f0ad4c90f

但我没有得到任何回应。你能帮我么。我真的被这个相当简单的任务困住了。

我的代码似乎是正确的,但我仍然得到

尚未为数据源“DataSet1_Order_Details”提供数据源实例。

对不起,交叉帖子...

4

3 回答 3

0

我有同样的经历,是因为我试图从错误的地方看到报告,让我解释一下

  • RDLC 报告中有一个数据集
  • DAL 中有一种从 db 获取数据的方法
  • BAL 或 UI 中有一个方法调用 DAL 方法并填充数据集。大多数情况下,这是一个独特的页面,它从用户那里获取一些参数并填充数据集,最后将用户重定向到报表查看器页面。
  • 您的错误出现在报告查看器页面中

所以可能会发生以下情况

  • 您直接进入reportviewer页面而不填充数据集
  • 您转到正确的页面并填充数据集,但在报告查看器页面中您没有将数据集绑定到后面代码中的报告。
  • 在某些情况下,可能是因为会话过期。
于 2010-05-11T06:15:05.360 回答
0

我解决了错误。

我正在添加数据源,例如

this.ReportViewer.Localreport.DataSource.Add
(new RemoteDataSource("DataSet1_Order_Details", ObjectDataSource2.ID));

相反,应按以下方式添加数据源

DataSet1TableAdapter.OrderDetails od = new DataSet1TableAdapter.OrderDetails();
((LocalReport)e.report).Datasources.Add(new RemoteDataSource("DataSet1_Order_Details", od.get(orderid))

这解决了问题,现在我可以深入研究 ReortViewer 报告。

问候, 阿布舍克

于 2010-05-12T10:12:34.700 回答
0

这也对我有用,尽管真正的关键就在这里:

((LocalReport)e.report)

就我而言,我正在使用:

((LocalReport)e.report).LoadReportDefinition(report_stream);

foreach (ReportParameter rp in ((LocalReport)e.report).OriginalParametersToDrillthrough)
        {
            _paramCollection[rp.Name].parameterValue.AddRange(rp.Values.OfType<string>());
        }
DataTable newData = GetData();
ReportDataSource rds = new ReportDataSource();
rds.Name = _datasetName;
rds.Value = newData;
((LocalReport)e.report).DataSources.Add(rds);

报告查看器处理其余部分。@Knows Not Much,感谢您的领导。

于 2012-01-10T13:19:10.707 回答