• Reporting Services API


    Reporting Services API

    1.     分页的控制方式

    1.1.  Reporting Services自动分页

    在报表的页眉或者页尾添加文本框,调用全局变量=Globals!PageNumber

    1.2.  根据记录条数来分页

    当每条记录呈现的高度不一致,我们又希望让每页呈现的记录条数一致,那么我们可以通过记录条数来分页。在通过记录条数分页时,通常是

    根据记录条数来分组,然后在组的结束位置添加分页符。

    在表、矩阵或者列表中添加一个组,然后在分组表达式中输入=(RowNumber("ContainerName") - 1) \ PageSize ( PageSize 用每页所包含的

    记录条数替代,ContainerName用包含这个组的表、矩阵或者列表的名称替代)。这个表达式是用记录的行号整除分页大小,也就是记录所在的

    页码数。最后选中在结尾处分页,在每个组实例的结尾处放置分页符。

    1.3.  按组分页

    插入组时,<常规>的页签中,可以选择<在起始处分页>或者<在结尾处分页>

     

    2.     获取参数列表的方法

    ReportingService rService = new ReportingService();//创建报表服务实例

    rService.Credentials = System.Net.CredentialCache.DefaultCredentials;//设置默认系统凭据

     

       string historyID = null;

       bool forRendering = true;

       ParameterValue[] values = null;  

       DataSourceCredentials[] credentials = null;

       ReportParameter[] parameters;

       parameters = rService.GetReportParameters//获取报表参数集合

        (

        "/cfhrreport/pos",

        historyID,

        forRendering,

        values,

        credentials       

        );

       ListItem item;

       foreach(ValidValue v in parameters[0].ValidValues)//遍历参数的有效值集合

       {

        item=new ListItem(v.Label ,v.Value );

        this.DropDownList1 .Items .Add (item);//填充到一个下拉框

       }

     

    3.     Reporting Services API

    首先添加web引用

    http://server/reportserver/reportservice.asmx

    ReportingService rService = new ReportingService();//创建报表服务实例

    rService.Credentials = System.Net.CredentialCache.DefaultCredentials;//默认系统凭据

    CatalogItem[] catalogItems;

    catalogItems = rService.ListChildren("/", true);//对根路径检索

    foreach(CatalogItem item in catalogItems)

    {

        if(item.Type ==ItemTypeEnum.Folder)

    {

    //遍历报表文件夹

    }

    }

     foreach(CatalogItem item in catalogItems)

    {

    if(item.Type ==ItemTypeEnum.Report)

    {

    //遍历报表

    }

    }

    //搜索报表

    ReportService.SearchCondition[] condition=new SearchCondition[1];

    condition[0]=new SearchCondition();

    condition[0].Name ="Name";

    condition[0].Value =this.TextBox1.Text ;

    catalogItems=rs.FindItems ("/",WebReportSample.ReportService .BooleanOperatorEnum .And ,condition);

    //发布报表

    byte[] reportData;

    System.IO .FileStream fs=System.IO .File.OpenRead ("c:\\Report1.rdl");

    reportData=new byte [fs.Length ];

    fs.Read (reportData,0,fs.Length );

    rs.CreateReport ("New Report","/",false,reportData,null);

    //删除报表

    rs.DeleteItem ("报表名称");

     

    4.     报表Url分析

    报表 URL 包含 Web 服务器的名称、报表服务器虚拟目录的名称以及报表的完全限定名称。(完全限定的名称包含报表路径,并以报表本身的

    名称结束。)

    http://server/virtualroot?[/pathinfo]&prefix:param=value[&prefix:param=value]...n]

        常用前缀及其参数名:

    4.1. rc:toolbar=true/false  显示/不显示工具栏

    4.2. rs:command=render 呈现报表

    4.3. rs:format=PDFDOCXLS)导出报表格式

    4.4. rc:parameters=true/false  显示/不显示工具栏的参数选择区域

    4.5. @Parameter=value  直接传递参数值

    注意:在URL参数中如果有中文,将不能被正确识别,解决的方法是用HttpUtility.UrlEncode将其转换为uft-8,再附加到参数中即可。此外还

    要注意参数是大小写敏感的。

     

    5. ASP.NET中展现报表

    ASP.NET提供了多种技术来呈现Web形式的报表,通常的解决方法是用Iframe。将我们前面所掌握的URL赋值给Iframesrc,结合Javascritp

    本,我们便可以将报表集成在页面中。此外,我们还可以充分利用ASP.NET强大的控件功能,如日历控件、图像按钮等功能提高系统的易用性。

    小技巧:有时报表中的图片可能会显示不出来,这可能是Cookies的设置问题,你也可以通过让客户下载reg文件,把Reporting Services服务

    器加入本地计算机的信任站点中。此外,报表中的imageembedexternal两种方式,建议使用external方式,这样可以有效地缩小报表的尺

    寸。

     

    6.报表中使用自定义嵌入式代码

    Reporting Service 只接受Microsoft Visual Basic .NET 中编写嵌入式代码, 代码准备好,您就可以使用全局定义的 Code 成员在报表表达

    式中调用它。例如,如果您编写了一个名为 GetValue 的嵌入式代码函数,就可以使用下列语法从您的表达式中调用它:

    6.1.在报表<属性>,选择<代码>页签,输入自定义代码

    Function GetValue(value As Object) As Object

    if Value is Nothing then

    return 0

    else

     return value

    end if

    End Function

        6.2.调用方法:

    =Code.GetValue(Code.GetValue(Fields!字段名.Value))

  • 相关阅读:
    POJ 1363
    HDU 1251(trie树)
    POJ 2081
    NYOJ 3(多边形重心)
    电子琴源码
    POJ 2503
    推荐些在线小制作小工具
    C# 在 webBrowser 光标处插入 html代码 .
    IIS自动安装程序(免费)
    developer express右键菜单显示汉化
  • 原文地址:https://www.cnblogs.com/engine1984/p/1020022.html
Copyright © 2020-2023  润新知