RDLC报告查看器钻取报告

时间:2010-05-11 06:05:04

标签: asp.net rdlc reportviewer2008

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

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

但我没有得到任何回应。你能帮我么。我真的很难接受这个相当简单的任务。

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

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

对不起,发布邮件......

3 个答案:

答案 0 :(得分:0)

我有同样的经历,这是因为我尝试从错误的地方取得报告,让我解释一下

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

所以可能发生以下情况

  • 直接输入到reportviewer页面而不填写数据集
  • 您转到了正确的页面并填充了数据集,但是报告中的查询页面没有将您的数据集绑定到后面的代码中的报告中。
  • 在某些情况下可能是因为会话过期。

答案 1 :(得分: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报告中深入了解。

此致 阿布舍克巴克

答案 2 :(得分: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);

reportviewer处理剩下的事情。 @Knows Not Much,感谢领导。