当前位置:编程学习 > C#/ASP.NET >>

如何为ReportViewer动态绑定新的rdlc报表文件

希望通过一个reportviewer控件展示多个报表文件(.rdlc文件),使得用户通过UI左侧ListBox选择报表名称,UI右侧区域则展现相应报表。但我的程序只能展示第一个默认报表,当用户选择其他报表时,右侧ReportViewer控件区域提示:尚未为数据源"..."提供数据源实例。我的代码如下:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
   ReportDataSource reportDS = (ReportDataSource)reportDataSourceHashTable[selectedReportName];
   if (reportDS == null)
   {
       BindingSource bindingSource = new BindingSource();
       bindingSource.DataMember = dataMemberName;//从XML文件读取
       bindingSource.DataSource = this.worksDataSet;//公共成员

       reportDS = new ReportDataSource();                
       reportDS.Name = dataSourceName;//从XML文件读取
       reportDS.Value = bindingSource;
       reportDataSourceHashTable.Add(selectedReportName, reportDS );
   }

  reportViewer.LocalReport.ReportPath = reportPath;//从XML文件读取
  reportViewer.LocalReport.DataSources.Clear();
  reportViewer.LocalReport.DataSources.Add(reportDataSource);
  reportViewer.RefreshReport();
}

假设默认report1.rdlc被选中,该报表的其数据源为WorksDataSet_view_1,则当用户选择report2.rdlc时,reportViewer控件提示:“尚未为数据源"WorksDataSet_view_1"提供数据源实例”,而事实上,report2.rdlc的数据源是WorksDataSet_view_2(但共享一个bindingSource.DataSource)。

  为什么?是在选择第二个rdlc文件时,对reportviewer control要clear?可我已经做了DataSources.Clear().

  请高手指点,该如何弄,最好有代码。在线等。
--------------------编程问答-------------------- 该回复被版主删除 --------------------编程问答-------------------- 不懂 帮顶下 --------------------编程问答-------------------- 帮LZ顶
  
http://user.qzone.qq.com/31767702 --------------------编程问答-------------------- 我也遇到了同样的问题
顶一下 --------------------编程问答-------------------- 解决了
每次更换报表前调用ReportViewer.Reset 方法 --------------------编程问答-------------------- up --------------------编程问答-------------------- 我也遇到相同的问题,动态的栏位,我是采用多拉报表,代码管控来实现 --------------------编程问答-------------------- 我在web中遇到同样问题,但在web中ReportViewer没有Reset方法,该如何处理? --------------------编程问答-------------------- ReportViewer.Reset --------------------编程问答-------------------- 刚好有用,thank --------------------编程问答-------------------- upupup --------------------编程问答-------------------- 5#的方法可行!
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,