如何为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#