Dynamics AX 2012 R2 客制化RDP报表参数对话框
当我们在使用RDP报表时,AX会根据Data Contract,自动生成报表参数对话框上的字段控件。一般情况下,该对话框能够满足我们的需求,但是如果有较为复杂或特殊的需求,就要我们对该对话框进行客制化。
Reinhard这里就有一张报表,需要使用员工编号作为参数。但是AX系统中默认的员工编号EDT,没有提供lookup方法。Reinhard将该员工编号EDT放在报表参数窗体上后,只能手工录入员工编号,不能通过下拉框进行选择。
默认效果是这样:

但是 Reinhard想要的效果是这样:

Reinhard经过不断地研究,发现AX提供了一种可以客制化报表参数对话框字段控件的技术——SysOperation Framework。如果你也和 Reinhard一样,想要改变自动生成的对话框上的字段,就可以使用该框架。
SysOperation Framework提供了一个SysOperationAutomaticUIBuilder类,通过继承该类,可以在系统基于我们服务操作的数据契约来生成对话框的过程中,添加自己的逻辑。一般包括以下业务逻辑:
- 设置字段控件的属性,如强制和启用
- 覆盖字段控件的方法,如lookup()和modifiedField()
- 覆盖addDialogField()方法,阻止控件被添加
如果你有大量的控件要使用UI Builder添加到对话框中,取而代之,可以考虑在控制器中使用模板窗体。
如果你在UI Builder中有大量的验证代码,取而代之,可以考虑在数据契约中实现验证。这样做,是为了遵循MVC哲学。
先来看看Reinhard的DataContract:
[DataContractAttribute]
public class Reinhard@MSDynAX.net_DataContract
{
HcmPersonnelNumberId hcmPersonnelNumberId;
} [DataMemberAttribute('HcmPersonnelNumberId')]
public HcmPersonnelNumberId parmHcmPersonnelNumberId(HcmPersonnelNumberId _hcmPersonnelNumberId=hcmPersonnelNumberId)
{
hcmPersonnelNumberId=_hcmPersonnelNumberId;
return HcmPersonnelNumberId;
}
Reinhard的DataContract中,只有一个属性——员工编号。想在报表参数对话框中,为该字段控件添加lookup方法。下面创建UI Builder类:
class Reinhard@MSDynAX.net_UIBuilder extends SysOperationAutomaticUIBuilder
{
DialogField hcmPersonnelNumberIdField;
} public void hcmPersonnelNumberIdLookUp(FormStringControl _control)
{
HcmWorkerLookup lookup=HcmWorkerLookup::newWorkersInCurrentCompany();
lookup.lookupWorker(_control);
} public void build()
{
super();
hcmPersonnelNumberIdField=this.bindInfo().getDialogField(
this.dataContractObject(),
methodStr(HPRN_1416_DC,parmHcmPersonnelNumberId)
);
} public void postRun()
{
super();
hcmPersonnelNumberIdField.registerOverrideMethod(
methodStr(FormStringControl,lookup),
methodStr(HPRN_1416_UIBuilder,hcmPersonnelNumberIdLookUp),
this);
}
可以看到,Reinhard的UI Builder中的第一个方法,是用于覆盖员工编号字段控件的lookup()方法。
第二个方法,获取到员工编号字段控件。
第三个方法,将我们的第一个方法,注册到字段控件的lookup()方法上。
最后,Reinhard修改Data Contract的声明:
[DataContractAttribute,
SysOperationContractProcessingAttribute(
classStr(Reinhard@MSDynAX.net_UIBuilder))]
public class Reinhard@MSDynAX.net_DataContract
{
HcmPersonnelNumberId hcmPersonnelNumberId;
}
其他部分依然遵循RDP报表的开发方式,不变。至此,打开报表参数对话框上的员工编号字段控件,已经有了下拉效果。
Dynamics AX 2012 R2 客制化RDP报表参数对话框的更多相关文章
- Dynamics AX 2012 R2 如何处理运行时间较长的报表
当处理的数据量较多,逻辑比较复杂时,报表可能会超时.为了解决这个问题,Reinhard一直使用SrsReportDataProviderPreProcess来做预处理报表.它会在调用SSRS前,在AX ...
- Dynamics AX 2012 R2 安装Reporting Services 扩展
今天Reinhard在VS中部署SSRS报表时,接到以下错误: 部署因错误而被取消.在报表服务器上,验证:-SQL Server Reporting Services 服务是否正在运行. 接着,Rei ...
- Dynamics AX 2012 R2 电子邮件广播错误 0x80040213
Dynamics AX 2012 R2 电子邮件广播错误 0x80040213 今天Reinhard在新环境做邮件广播测试时,发现无法发送邮件,并报以下错误: 类"CDO.Message&q ...
- [译]Dynamics AX 2012 R2 BI系列-分析的架构
https://msdn.microsoft.com/EN-US/library/dd309691.aspx 下图显示了包含在AX中的SSAS Cube,和用于访问他们的组件. 下面的 ...
- Dynamics AX 2012 R2 安装额外的AOS
众所周知,AX系统分为三层:Client,Application Server,Database Server. 我们添加额外的Application Server主要是出于以下两个原因: 使用多台服 ...
- Dynamics AX 2012 R2 窗体系列 - 在窗体上修改字段时所触发的方法及其顺序
在这个系列里,Reinhard将和大家一起探索在AX的窗体上执行操作时,都会触发窗体.窗体数据源和表上的哪些方法,并且是以怎样的顺序触发的. 这次,我们来看看在窗体上修改或录入数据的情 ...
- Dynamics AX 2012 R2 业务系列-销售业务流程
在博文Dynamics AX R2 业务系列中,Reinhard对这个系列做了一个规划,下面我们就按照规划开始说业务吧. 1.销售的主要职责 其实这里说的职责主要是针对销售文员,并非整天外面满世界跑业 ...
- Dynamics AX 2012 R2 业务系列-采购业务流程
在博文Dynamics AX R2 业务系列中,Reinhard对这个系列做了一个规划,下面我们就按照规划开始说业务吧. 国际惯例,从采购开始. 1.采购的主要职责 简单点说,采购的主要职责,是从供应 ...
- Dynamics AX 2012 R2 业务系列
在之前的一系列博文里,Reinhard介绍了Dynamics AX Demo的安装与配置.相信同学们看完后,都已经成功拥有了一个测试环境. 众所周知的是,ERP作为一个特殊的软件系统,他有着背后的业务 ...
随机推荐
- Linux中下载、解压、安装文件
一.将解压包发送到linux服务器上: 1.在windos上下载好压缩包文件后,通过winscp等SFTP客户端传送给linux 2.在linux中通过wget命令直接下载 #wget [选项] [下 ...
- C# @符号的作用, 可定义关键字为变量名
一 字符串中的用法字符@表示,其后的字符串是个“逐字字符串”(verbatim string).@只能对字符串常量作用.1.用于文件路径以下是引用片段:string s_FilePath =" ...
- artdialog4.1.7 中父页面给子页面传值
artdialog4.1.7中父页面给子页面传值时看了一些网友的解决方法: 在父页面声明全局变量 var returnValue=“ ”,子页面用art.dialog.opener.returnVal ...
- bzoj1150: [CTSC2007]数据备份Backup--贪心+优先队列维护堆
题目大意:将k对点两两相连,求最小长度 易证得,最优方案中,相连的办公楼一定是取相邻的比取不相邻的要更优 然后就可以用贪心来做这道题了.. 之前向CZL大神学习了用堆来贪心的做法orz 大概思路就是将 ...
- 2016HUAS暑假集训训练题 G - Oil Deposits
Description The GeoSurvComp geologic survey company is responsible for detecting underground oil dep ...
- decode 函数将字符串从某种编码转为 unicode 字符
环境:Ubuntu, Python 2.7 基础知识 这个程序涉及到的知识点有几个,在这里列出来,不详细讲,有疑问的直接百度会有一堆的. 1.urllib2 模块的 request 对像来设置 HTT ...
- 10.5.2 Boot Block 启动块 - 操作系统教程
简单一篇文章明白地讲解了计算机操作系统的启动过程 OPERATING SYSTEM CONCEPTS ABRAHAM SILBERSCHATZ PETER BAER GALVIN GREG GAGNE ...
- BigPipe学习研究
BigPipe学习研究 from: http://www.searchtb.com/2011/04/an-introduction-to-bigpipe.html 1. 技术背景 FaceBook ...
- mac 下面wireshark 找不到网卡
终端上面,执行如下命令: sudo chgrp admin /dev/bpf* sudo chmod g+rw /dev/bpf* http://www.9upk.com/article/25 ...
- Dynamic Percentage of Operands
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION