且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

vs ReportViewer 报表控件

更新时间:2022-09-07 23:01:23

引用:http://www.cnblogs.com/akak123/archive/2012/08/27/ReportViewer.html

ReportViewer是vs自带控件。今天在此说明下他的用法,主要是感觉网上资料有点少。晒一点希望对大家有所帮助。

其实他的使用步骤十分简单:

1 托入相应的控件(ReportViewer,和 *.rdlc类型的文件)

2 关联数据

3 加上ajax

 

 

1.托入相应的控件

对应拖入2个控件后, rdlc中用拖拉设置报表的布局,并设置数据源。

在rdlc中的设置中 有足够多的图表类型选择

vs ReportViewer 报表控件

 

并且可在图中圆圈处拖入字段,表示系列或者轴内容

vs ReportViewer 报表控件

 

2关联数据

数据源拖入后,用一下方式可查看.rdlc文件。事实上他把布局的所有细节转化为xml来表示。

所有如果你想要自定义数据源也成为可能

vs ReportViewer 报表控件

vs ReportViewer 报表控件

vs ReportViewer 报表控件

 

 

关于自定义数据源

首先你需要在.rdlc中设置好报表的外形。然后你可以在页面后台指定数据源。

vs ReportViewer 报表控件View Code
vs ReportViewer 报表控件
 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) {
            
             DataClasses1DataContext _dc = new DataClasses1DataContext();
            var _data = _dc.zwgxx22(DateTime.Parse("2012-1-1"), DateTime.Parse("2012-8-23"));
            DataTable dt = new DataTable("dataset");
            dt.Columns.Add("MaxUpSpeed",typeof(int));  //列 务必带上数据类型 否则无法显示报表内容,并和rdlc上的数据源完全相同
            dt.Columns.Add("MaxDownSpeed", typeof(int));
            dt.Columns.Add("MinUpSpeed", typeof(int));
            dt.Columns.Add("MinDownSpeed", typeof(int));
            dt.Columns.Add("AvgUpSpeed", typeof(int));
            dt.Columns.Add("Datetime", typeof(DateTime));
            dt.Columns.Add("AvgDownSpeed", typeof(int));
            foreach (var item in _data)
            {
            
                dt.Rows.Add(new object[] { 
                        item .AvgDownSpeed,item.MaxDownSpeed,item.MinDownSpeed,
                        item.MinUpSpeed,item.AvgUpSpeed,item.Datetime,item.MaxUpSpeed});
            }
            ReportDataSource _rpdata = new ReportDataSource("DataSet2", dt);  
            this.ReportViewer1.LocalReport.DataSources.Clear();
//清理原来数据源
            this.ReportViewer1.LocalReport.DataSources.Add(_rpdata);//绑定新数据源
            ReportViewer1.LocalReport.Refresh();//刷新
            
            }
           

        }
 
vs ReportViewer 报表控件

注意点:

如果是自定义数据源,在.rdlc中设置的数据源元素需要和后台设置层次对应,即在.rdlc的xml表示中DataSource和dataSet必须对应自定义数据源datatable中的 ReportDataSource _rpdata = new ReportDataSource([DataSource], dt);和 DataTable dt = new DataTable([dataSet]);

如果不是自定义数据源,只要拖拉就能完成报表的显示:

vs ReportViewer 报表控件

3 ajax


完成以上操作后需要在reportviewer外头套一个scriptManager  和updatepanel(必须)。因为他需要用脚本包装和回发

 

 

希望对大家有所帮助吧