Asp.net使用RDLC开发报表

Asp.net使用RDLC开发报表

  至vs弃用水晶报表后,再加上水晶报表功能确实强大,但是有些地方使用,总感觉杀鸡焉用牛刀?于是就对RDLC报表做起来了研究,对于EDLC的报表,多多少少也用到了一项大大小小的项目上面,但是一直都都想弄一篇关于RDLC报表的心得跟大家一起分享,刚好今天有机会,就随便写一点东西,供大家参考,不对的地方请指正!

  首先,第一步,不管怎么样,我们建立一个WEB工程,建立WEB工程这步我就省略了,现在直接报表的总纲。

首先注意一点,不过这点,我得好好研究一下,新建的“数据集文件”必须放在网站的根目录,否则报表找不到数据集,不知道为什么,我刚刚试了好几次,我以前的项目就不是这样的,等下回去看看以前的实例,在把这个BUG交代清楚。由于个人习惯,我建立的数据集都是自己手动建立,而不是采取的自动生成,好吧,现在接着上图:

  第一步,建立数据集,如下图所示:

  完成之后,直接右键,添加数据表----用数据集,生成表数据结构时方便。用其它的会有一大堆操作。

  紧接着,我该上第二幅图了,请看:

  完成之后修改Datatable的名字,然后右键,添加列,这里面的列当时根据你报表需要的需要的数据来添加就行了,十分简单。

  再上两幅图:

  添加完整后的效果:

  接下来我们报表文件该上场了,这一步当然也是添加报表文件了,看下图(这里的报表文件不需要放在项目的根目录,所放位置可以随意)

  输入完文件名称,点击确定后,如下图所示的效果:

  选择报表,右键点击报表的内容,会出现很多了选择项,根据你的选择,添加你需要的数据,这里的选择,也可以在工具箱中找到,我们先添加一个文本,然后添加一个数据表,看图吧:

  完成后,可以相应的设置文本这些,现在我就来做一些简单的设置,如下图:

  添加完成之后,它会自动弹出如下图的这个界面:

  由于我们先添加了数据集,所以没有弹出如下图的这种界面,这个地方,对于我今天讲解的来说不符合,如果弹出这个界面,我直接选择关闭,如果你是需要自动生成的,那么你可以跟着提示,一步一步配置,就可以得出相应的效果,上图:

  到了这一步,在选择数据这里,根据自己的需要,进行相对应的修改,中间有一项,“数据源”,这里可以选择到程序中的数据源,根据自己的需求,选择对应的数据源,如下图所示:

  选择完成之后,如下图所示:

  这里可能会一个问题,那就是左边的报表数据选项卡可能会没有,如果没有,你可以根据下面的图把它设置出来,如果有,请挑开这一步:

  如果你能看到这里,或者已经跟着上面的操作走到了这里,那我得恭喜你了,你能遇到的麻烦,都差不多已经解决了。因为新报表的时候,没有出数据,或者是其他的问题你已经解决了。相当初,我要想走到这一步实在是太难了,走过不少弯路啊,但是现在能和大家分享,希望大家不要走弯路。

  还有一点,如果你的报表是中文的话,你最好把文字设置为中文的字体,因为这样可以避免出现乱码,出现乱码也只是偶尔,但是大家还是小心使得万年船。

  现在我们来弄弄报表中数据吧,首先我们需要添加列,添加完成之后,可以点击列,选择数据源中的数据字段,还是上图,有图好说话:(表选中整列,点“Tablix属性”,可以看表的属性)

  完成后的效果:

  

  到了这里,报表设计已经完成,我们该把这个报表文件嵌入到aspx页面上去,这样才能展示效果,如果你用的是“窗体应用程序”,上面这几天都是一样的,唯一有差别的是展示的效果,但是后台代码都一样,完全可以通用的。

  切换到aspx,在工具箱中找到报表的控件,把它添加到aspx页面上,如下图和代码所示:

 

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <rsweb:ReportViewer ID="ReportViewer1" runat="server">
    </rsweb:ReportViewer>
</form>

 后台绑定一下,绑定代码如下:

private void ReportBind()
        {
           
            DataSet ds = new DataSet();
            ds = GetProductReport();

            if (ds == null)
            {
                this.ReportViewer1.LocalReport.DataSources.Clear();
                this.ReportViewer1.LocalReport.Refresh();
                return;
            }
            ReportDataSource objReportDataSource = new ReportDataSource("ProductData", ds.Tables[0]);
            this.ReportViewer1.LocalReport.ReportPath = @"ProductReport.rdlc";
            this.ReportViewer1.LocalReport.DataSources.Clear();
            this.ReportViewer1.LocalReport.DataSources.Add(objReportDataSource);
            this.ReportViewer1.LocalReport.Refresh();
        }

        public DataSet GetProductReport() 
        {
            DataSet ds = new DataSet();
            //ds 获取数据查询的值即可
            return ds;
        }

上面这个引用于:https://www.cnblogs.com/luxianai/p/2751057.html

**************************补充*************************************

1,关于参数

2,vb.net 的后台代码

 Dim dt_pri As New DataTable

        dt_pri.Columns.Add("per_ton", GetType(System.Double))  'sql数据库中的numeric对应vb.net的Decimal类型
        dt_pri.Columns.Add("type_price", GetType(System.Single))
        dt_pri.Columns.Add("price_add", GetType(System.Double))
        dt_pri.Columns.Add("pay_money", GetType(System.Double))
        dt_pri.Columns.Add("type_name", GetType(System.String))

        dt_pri.Rows.Add(24, 2.5, 3.6, 1.7, 8.4)  '加入记录到表中

        ReportViewer1.LocalReport.DataSources.Clear()
        ReportViewer1.LocalReport.Refresh()

       

        'System.Web.HttpContext.Current.Server.MapPath("~/inv_rpt.rdlc")
        ReportViewer1.LocalReport.ReportPath = System.Web.HttpContext.Current.Server.MapPath("~/inv_prt.rdlc")

        ReportViewer1.LocalReport.DataSources.Clear()
        ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", dt_pri))

        Dim rptpars(0) As ReportParameter    '参数数组  '因从0开始比总数,个数=值+1
        rptpars(0) = New ReportParameter("t0", "132413-74817") '年月日 时
        ReportViewer1.LocalReport.SetParameters(rptpars)


        ReportViewer1.LocalReport.Refresh()

***************************其它补充************************

SSRS:关于“在 Web 窗体上报表查看器 Web 控件需要 System.Web.UI.ScriptManager”

   报表在项目中设计好,发布到报表服务器后,在日常业务过程中,一般不会直接登录到报表服务器上去查看报表,而是通过第三方应用进行查看,一来方便系统集成、二来方便权限控制,我们需要通过ASP.NET应用程序来显示报表,操作过程如下:

  创建aspx页面后,引入ReportViewer组件,两种方式:(1)手工输入代码,一定要注意添加引用、修改web.config;(2)直接从工具箱中拖动到页面,关于配置都会自动生成。(这个要省事多了),代码如下:

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana"
        Font-Size="8pt" InteractiveDeviceInfos="(集合)" ProcessingMode="Remote"
        WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt">
        <ServerReport ReportPath="/xxxx/FromReport" ReportServerUrl="http://localhost/reportserver" />
    </rsweb:ReportViewer>

预览页面后,却出现了“在 Web 窗体上报表查看器 Web 控件需要 System.Web.UI.ScriptManager”这样的错误,

解决方案:

我们直接在页面中,添加如下代码:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

问题解决。

**************************************

rdlc文件,在生成时,文件属性中的“生成操作”选择“内容”。

不然,在项目生成的时候,系统会提示找不到文件。

标记下,以后方便查阅。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值