Asp.net使用RDLC开发报表(一)

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

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

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

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

  完成之后,直接右键,添加数据表(有的人看了之后,感觉非常不爽,为什么要手动了,为什么不直接生成了,我告诉你们把,我喜欢,我乐意,O(∩_∩)O哈哈~,总体来说,是个人习惯而已)。

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

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

  再上两幅图:

  添加完整后的效果:

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

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

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

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

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

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

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

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

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

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

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

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

  完成后的效果:

  

  到了这里,报表设计已经完成,我们该把这个报表文件嵌入到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;
        }
posted @ 2012-11-02 22:55  luxianai  阅读(1485)  评论(0编辑  收藏  举报