当前位置: 首页 > news >正文

[AX]AX2012 SSRS报表Drill through action

SSRS报表显示的字段可以添加两种Drill through action,一是Report Drill Through Action,这要用到两个报表,一个顶级报表的某个字段添加drill through操作,另一个报表在top report中点击drill through的时候呈现出来以显示一下额外的信息。

上图显示的是在顶级报表的Name字段下新建了一个report dirll through action,通过子报表的参数SelectedAssertId传递所选择纪录的信息。

上图则是子报表,在子报表中根据传入的参数SelectedAssertId对数据做了过滤,总体上讲这种Drill through还是比较简单的。

 

另外一种Drill through称为URL Drill Through Action,其实现方法是在drill action中返回一个表达式指向的URL,要动态的实现URL,可以使用report data method,比如系统自带的HcmAbsenceSetup报表:

DrillWorkder是一个report data method,是这样定义的:

    [DataMethod(), PermissionSet(SecurityAction.Assert, Name = "FullTrust")]
    public static string DrillWorker(string reportContext, string personnelNumber)
    {
        return DrillThroughCommonHelper.ToHcmWorker(reportContext, personnelNumber);
    }

这里用到了DrillThroughCommonHelper帮助类,由它生成相关动作的链接,包含在SRSDrillThroughCommon工程中,内部用到了DrillthroughHelper类,在命名空间Microsoft.Dynamics.AX.Application.Reports下,这个类提供方法来生成到AX MenuItem的链接,比如这样用:

[DataMethod(), PermissionSet(SecurityAction.Assert, Name = "FullTrust")]
    public static string DrillThroughLinkToRoom(string reportContext, object fieldValue)
    {
        string tableName = "FCMRooms";
        Dictionary<string, object> fields = new Dictionary<string, object>();
        fields.Add("RecId", fieldValue);

        if (RuntimeReportContext.IsClientContext(reportContext))
        {
            // The report is being run from the Microsoft Dynamics AX client.
            return DrillthroughHelper.GenerateLinkToAXMenuItem(reportContext, "FCMRoomsForm", MenuItemType.Display, tableName, fields);
        }
        else
        {
            // The report is being run from Enterprise Portal.
            return DrillthroughHelper.GenerateLinkToAXMenuItem(reportContext, "RoomDetails", MenuItemType.WebMenuItemTypeUrl, tableName, fields);
        }

更多内容详见http://msdn.microsoft.com/EN-US/library/hh533446

 

相关文章:

  • Android写日志文件类
  • 尚能饭否
  • 第九章 第一小节:打印机共享优先级
  • Linux下使用https访问站点
  • vSphere 5.0 新功能中文版说明
  • eclipse开启和去掉代码上面的快速导航栏(Toggle Breadcrumb)的方法
  • 获取矢量图层的属性值
  • wxWidgets利用tinyxml实现xml解析
  • 关于JAVA的常见误解
  • 乱起八糟用linux之快速查看进程pid
  • JS文件UTF-8格式的问题
  • 使用php mongodb扩展时比较需要注意的事项
  • [转载] 山楂树之恋——07-09
  • 计算硬盘分区使用的大小
  • as3 键盘事件多键同时按下
  • classpath对获取配置文件的影响
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Fabric架构演变之路
  • Hexo+码云+git快速搭建免费的静态Blog
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • nodejs实现webservice问题总结
  • PHP 小技巧
  • Shell编程
  • vue--为什么data属性必须是一个函数
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 阿里云应用高可用服务公测发布
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 技术:超级实用的电脑小技巧
  • 小程序开发之路(一)
  • 硬币翻转问题,区间操作
  • 湖北分布式智能数据采集方法有哪些?
  • !!Dom4j 学习笔记
  • #define与typedef区别
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (12)目标检测_SSD基于pytorch搭建代码
  • (3)(3.5) 遥测无线电区域条例
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (七)c52学习之旅-中断
  • (一)认识微服务
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .net分布式压力测试工具(Beetle.DT)
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • /usr/bin/env: node: No such file or directory
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [C/C++] -- 二叉树
  • [C++]18:set和map的使用
  • [C++]C++入门--引用
  • [dfs] 图案计数
  • [EFI]Lenovo ThinkPad X280电脑 Hackintosh 黑苹果引导文件
  • [EULAR文摘] 脊柱放射学持续进展是否显著影响关节功能
  • [E单调栈] lc2487. 从链表中移除节点(单调栈+递归+反转链表+多思路)