C# 实现reportview的操作,详解。

一、vs2015中没有reportview组件,需要安装。

在VS中选择工具——Nuget包管理器——程序包管理器控制台

执行命令:Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms -Pre

然后在VS的工具——选择工具箱项——.NetFramework下,选择“浏览”,然后在工程根目录下的“\packages\Microsoft.ReportingServices.ReportViewerControl.Winforms.xx\lib\net40”目录下选择“Microsoft.ReportViewer.WinForms.dll”文件(其中xx代表Microsoft.ReportingServices.ReportViewerControl.Winforms.140.1000.523后面的数字)。

或者在VS的项目——管理NuGet程序包——浏览中搜索并安装

若添加后是15.0版本的,需要.net4.6才能编译成功。

 二、若安装后仍有问题,需更新VS2015的安装。

勾选上以下三个选项,安装即可。

三、报表的使用步骤

  1. 添加数据集类(.xsd)

 在数据集文件中添加DataTable,并编辑字段,Ctrl+l为添加字段的快捷键,字段默认string类型。

2. 添加报表类(.rdlc)

在报表文件中可添加文本框、矩阵、表,为他们绑定数据集里的字段。

 文本框可通过传递参数的方式更新数据。

 

若在开发过程中发现在数据集里添加新的字段,而rdlc文件中没有显示的问题,那是因为rdlc文件不会根据数据集文件中的字段进行自动更新,需要手动更新。

把rdls文件以xml的方式打开

 打开后,下拉到最后,可以删除添加字段,添加后rdlc文件中便可查看和选择了。

 

 3. 在form窗体中添加reportview组件,单击右上角的小箭头,选择rdlc文件即可。

四、上代码:三种方式实现数据的传递与更新

 //方式一:查询数据,把结果直接赋值给reportview
        public void  QueryData()
        {

            string MyConn = "server=" + serverIP + ";uid=" + userName + ";pwd=" + password
           + ";database=" + databaseName + ";Trusted_Connection=no";

            SqlConnection MyConnection = new SqlConnection(MyConn);

            string strSql = "select  *  from  SJJRDCJ where 1=1";

            SqlCommand MyCommand = new SqlCommand();
            SqlDataReader mySqlDataReader;
            DataSet MyDataSet = new DataSetNew();//把已创建好的数据源赋值给数据集变量

            try
            {
                //打开连接并执行sql语句
                MyConnection.Open();
                MyCommand.CommandType = CommandType.Text;
                MyCommand.Connection = MyConnection;
                MyCommand.CommandText = strSql;
                mySqlDataReader = MyCommand.ExecuteReader(); //执行sql语句,把读取的结果给SqlDataReader类的实例

                //把读取来的数据加载到数据集中。
                MyDataSet.Tables[0].Load(mySqlDataReader);

                //关闭读取及其连接
                mySqlDataReader.Close();
                MyConnection.Close();

                //为查看器提供本地报表数据
                reportViewer1.LocalReport.ReportPath = "Report2.rdlc";//把Report2.rdlc 文件放在bin目录下。
                reportViewer1.LocalReport.ReportEmbeddedResource = "Report2.rdlc";//获取或设置报表嵌入资源的名称

                //准备报表数据源
                ReportDataSource rds = new ReportDataSource();
                rds.Name = "DataSetNew";//这个名字别错了
                rds.Value = MyDataSet.Tables[0];
                reportViewer1.LocalReport.DataSources.Clear();
                reportViewer1.LocalReport.DataSources.Add(rds);//把数据源加载到reportview中去
                
                reportViewer1.RefreshReport();


            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }

            finally
            {
                if(MyConnection.State == ConnectionState.Open)
                {
                    MyConnection.Close();
                }
            }

        }
 //方式二:datatable 为数据源的方式。
        private void UpdatePatientInfo()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Sex", typeof(string));
            dt.Columns.Add("Age", typeof(string));
            dt.Columns.Add("KeShi", typeof(string));
            dt.Columns.Add("CheckNum", typeof(string));
            dt.Columns.Add("BedNum", typeof(string));
            dt.Columns.Add("ZhuYuanNum", typeof(string));
            dt.Columns.Add("Height", typeof(string));

            DataRow row = dt.NewRow();
            row[0] = "张一";
            row[1] = "男";
            row[2] = "23";
            row[3] = "神经科";
            row[4] = "1456432";
            row[5] = "394";
            row[6] = "93493494399";
            row[7] = "168cm";
            dt.Rows.Add(row);

            reportViewer1.LocalReport.ReportPath = "Report2.rdlc";//把Report2.rdlc 文件放在bin目录下。
            reportViewer1.LocalReport.ReportEmbeddedResource = "Report2.rdlc";//获取或设置报表嵌入资源的名称
            reportViewer1.LocalReport.DataSources.Clear();
            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSetNew", dt));//这里的DataSetNew数据集的名称,而不是xsd文件名。

            reportViewer1.RefreshReport();

        }
 //方式三:通过设置参数的方式把值传给reportview,前提是依附于设定好数据源,也就是说必须先执行方法一或者方法二。
        private void SetCanShu()
        {
            reportViewer1.ShowParameterPrompts = true;

            ReportParameter titleName = new ReportParameter();
            titleName.Name = "ReportParameter1";
            titleName.Values.Add("标题");

            ReportParameter danWeiName = new ReportParameter();
            danWeiName.Name = "ReportParameter2"; 
            danWeiName.Values.Add("单位名称");

            reportViewer1.LocalReport.SetParameters(new ReportParameter[] {danWeiName,titleName });
            reportViewer1.RefreshReport();
        }

源代码请查看我的资源:C#对reportview的使用-数据集文档类资源-CSDN下载

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用\[1\]和\[2\]是关于C#中使用FastReport和System.Data.SqlClient的命名空间的引用。这些命名空间提供了在C#中生成报表所需的功能和类。引用\[3\]是一个关于使用本地动态数据作为测试用例来熟悉VS自带的ReportViewer控件的前言。 要在C#中生成报表,可以使用FastReport库。首先,确保已经安装了FastReport库,并在项目中引用了相应的命名空间。然后,可以使用FastReport提供的类和方法来创建和设计报表模板,设置数据源,填充数据,并最终生成报表。 另外,如果你想使用ReportViewer控件来生成报表,可以使用System.Data.SqlClient命名空间中的类来连接数据库并获取数据。然后,将数据绑定到ReportViewer控件上,以生成报表。 总之,要在C#中生成报表,你可以使用FastReport库或者使用ReportViewer控件,并根据需要引用相应的命名空间和类。 #### 引用[.reference_title] - *1* *2* [C#调用报表生成器成功案例示例研究](https://blog.csdn.net/RoffeyYang/article/details/118365066)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C#——ReportView生成报表](https://blog.csdn.net/jiDxiaohuo/article/details/101371190)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值