ReportViewer动态加载报表文件

来源:互联网 发布:体细胞重编程 编辑:程序博客网 时间:2024/05/15 08:33

webform中一个ReportViewer控件如何动态显示多个rdlc文件,在网上搜索了一些资料都没有找到实现方法。于是自己就在页面中添加多个ReportViewer控件来对应多个rdlc文件,然后根据需要显示和隐藏部分ReportViewer控件。但是这样页面上控件太多代码看起来也有许多多余的地方,在微软Jasson Wang的帮助下找到了一种动态显示rdlc文件的方法。

 

/*页面上放置一个ReportViewer1和两个按钮ButtonBing,ButtonXian点不同的按钮ReportViewer1显示不同的报表文件(Reportxian.rdlc和Reportbing.rdlc)*/

protected void ButtonXian_Click(object sender, EventArgs e)
    
{
      

        ControlCollection coll 
= ReportViewer1.Parent.Controls;
        
int oldIndex = coll.IndexOf(ReportViewer1);
        ReportViewer newViewer 
= new ReportViewer();
        coll.AddAt(oldIndex, newViewer);
        coll.Remove(ReportViewer1);

        newViewer.LocalReport.DataSources.Clear();

        newViewer.LocalReport.ReportPath 
= MapPath("Reportxian.rdlc");
        newViewer.LocalReport.ReportEmbeddedResource 
= "Reportxian.rdlc";
        ReportDataSource rpt 
= new ReportDataSource("DataSet1_ShowOneFruit", ds.Tables["table"]);
        newViewer.LocalReport.DataSources.Add(rpt);
        newViewer.LocalReport.Refresh();


    }

    
protected void ButtonBing_Click(object sender, EventArgs e)
    
{

       
        ControlCollection coll 
= ReportViewer1.Parent.Controls;
        
int oldIndex = coll.IndexOf(ReportViewer1);
        ReportViewer newViewer 
= new ReportViewer();
        coll.AddAt(oldIndex, newViewer);
        coll.Remove(ReportViewer1);


        newViewer.LocalReport.DataSources.Clear();

        newViewer.LocalReport.ReportPath 
= MapPath("Reportbing.rdlc");
        newViewer.LocalReport.ReportEmbeddedResource 
= "Reportbing.rdlc";
        ReportDataSource rpt 
= new ReportDataSource("DataSet1_ShowOneFruit", ds.Tables["table2"]);

    

        newViewer.LocalReport.DataSources.Add(rpt);


        newViewer.LocalReport.Refresh();
       
        
    }
原创粉丝点击