• [实践]FastReport.NET使用示例


    废话不说直接正题!

    1 下载FastReport.NET。网上搜索一下,下载资源一大把,这是收费的,所以我使用了demo版;

      注意:FastReport.NET 和FastReport Studio不是同一个东西,别下错了;

      FR.NET只支持VS2005/2008;

      官网:http://ns.fast-report.com/en/,有说明文档使用手册下载,论坛也很不错,问题解答的很详细;

    2  先在本机上安装好VS2005/2008(我试验的时候使用的是2008),再安装FR.NET,启动VS,新建一个ASP.NET WEB应用程序项目;

    3  页面设计:在VS中设计Default.aspx页面时,可直接在工具箱中拖出一个 WebReport控件放置于页面上:

       

                                                      图一

    4 数据源指定:FR支持多种数据源(详见其说明),可以在aspx页面上选定数据源,或者进入FR设计器中再指定;

      拖放一个SqlDataSouce控件到页面上,设定好,在测试连接的时候最好预览下数据,确保数据源能正常使用;

      选定WebReport控件,如图一,会有一个“>”标记按钮出现,点击,会出现如图二所示对话框:

                                                              

                            图二

      点击“Select Data Source”,弹出一个对话框,选择刚刚配置好的SqlDataSouce;

    5 设计:点击图二中的“Design Report...”就会打开FR设计器,如图三所示:

      

                        图三

      在设计器里,大家可以尽情地发挥,设计出你最喜欢(多数时候得老板喜欢)的样式,FR已经提供了很多模板,很漂亮,大家稍微改动

      一下就能得到自己的模板(.frx文件)。我这里只是简单的拖放了几个文本控件,然后将它们绑定到了前面选定好的datasouce上,大家可以自己

      动手点点看,这一点很简单,也许你是第一次用,但凭猜想你也可以做出来。

    6 codding/运行:设计好后点保存,然后关掉设计器(必须关掉,因为它是以置顶子窗体弹出来的,不关掉不能操作VS)。

      在aspx页面上选中webreport控件,查看它的事件,为它添加上StartReport事件,写上几行代码就OK了,如图四:

           

      

                                                   图四

    注意:在Page_load事件中也有一行代码,我这里的webreport控件的名字就叫“WebReport1”;

    保存,运行,大家就可以看到效果了~

    到此,这个简单示例就完成了;刚开始使用FR千万记得查看用户手册,你的很多疑问在这里可以找到答案;

    另:很多人在问FastReport如何从页面传递参数的问题,我在这里简单说下吧:

      FR的参数分两种,Query Parameter 和Report Parameter;

      Query Parameter (查询参数):是在FR中用向导设定DataSouce时,可以用带参数的SQl文来指定,形如:

        select * from table where country = @parameterName

        对于这种参数,在用向导创建DataSouce时,会弹出一个窗口来让你对参数进行编辑,如图五:

                      图五

    查询参数的名字是  qparam1,大家需要给它指定表达式 ,Expression属性中 “[param1]”就是一个表达式,param1是一个报表参数

    Report Parameter。这意思就是,在运行时,qparam1的值将会和param1一致;

    Report Parameter(报表参数):它的值你可以在FR的脚本中指定,也可以在aspx页面的cs代码中指定(参见图四中被注释掉的代码);看图三设计器界面图,在右边的窗口里,你可以找到参数这一项,你可以在这里新建/编辑一个报表参数;

    现在大家应该明白如何从页面传递参数的值,并把它用于SQl查询中了;

    但实际上还有一个问题,使用Query Parameter 时,它只能是一个简单值,不能是复杂的字符串,比如这样的SQL文:

    select * from table where country in ('en','cn')

    如果你想把('en','cn') 这整个部分设定为一个参数那是不行的,向导会报错,这时如何解决?

    在FR设计器中,大家可以看到它是有自己的脚本的(C#语言),在其中添加上_StartReport事件,代码如下所示:


     1using System;
     2using
     System.Collections;
     3using
     System.Collections.Generic;
     4using
     System.ComponentModel;
     5using
     System.Windows.Forms;
     6using
     System.Drawing;
     7using
     System.Data;
     8using
     FastReport;
     9using
     FastReport.Data;
    10using
     FastReport.Dialog;
    11using
     FastReport.Barcode;
    12using
     FastReport.Table;
    13using
     FastReport.Utils;
    14using
     FastReport.Controls;
    15

    16namespace
     FastReport
    17
    {
    18  public class
     ReportScript
    19  
    {
    20

    21    private void _StartReport(object
     sender, EventArgs e)
    22    

    23
         
    24      string str1 = (Report.Parameters.FindByName("param1"
    )).Value.ToString();
    25
         
    26      TableDataSource datasource = Report.GetDataSource("protable"as
     TableDataSource;
    27         datasource.SelectCommand =  "select * from protable where " +
     str1 ;
    28
          
    29    }

    30
    31  }

    32}

        再结合图四中被注释掉的传参代码,大家应该全明白了……ok,就到这里吧。

    学海无涯,回头没岸

  • 相关阅读:
    十天冲刺:第四天
    十天冲刺:第三天
    会议2.3
    会议2.2
    会议2.1
    团队绩效管理
    Alpha版(内部测试版)发布
    意见汇总
    建议汇总
    会议1.10
  • 原文地址:https://www.cnblogs.com/81du/p/2180100.html
Copyright © 2020-2023  润新知