[AX]AX2012 Interaction class
Ax2012 Client的form如果属性FormTemplate设置为DetailsPage或者ListPage,则必须同时设置属性InteractionClass为相应的Interaction类,比如采购订单详细信息窗口PurchForm的InteractionClass被指定为PurchTableInteraction,它的作用是对用户在form中所做的操作面板标签切换、记录选择等做出响应,以更新操作面板中控件的状态。
Details或者List风格的Form,通常是包含一个或者多个ActionPane的,Interaction类从PageInteraction派生,其中最重要的一个方法就是tabchanged方法,在扩展类中我们重载这个方法,form中切换ActionPane的Tab时,系统会通过类InteractionService的callTabChanged方法调用重载的tabchanged方法,下面是PurchTableInteraction的tabchanged方法:
public void tabChanged(container _activeTabNames)
{
Array tabNameArray = new Array(Types::String);
int i; super(_activeTabNames); for (i=;i<=conLen(_activeTabNames);i++)
{
tabNameArray.value(i,conPeek(_activeTabNames,i));
} this.init();
if (purchTable)
{//Tab changed is called on form open before selection changed.
this.enableHeaderActions(tabNameArray);
this.enableHeaderActionsFromLine();
}
}
它根据当前选择的采购单记录和采购行更新当前激活的ActionPane tab的控件的使能状态,当前激活的ActionPane Tab的名称从参数_activeTabNames传入,要获取当前form数据源的记录我们可以通过Page对象来获取:
page = this.page();
purchLine = page.activeRecord(identifierStr(PurchLine));
purchTable = page.activeRecord(identifierStr(PurchTable));
inventDim = page.activeRecord(identifierStr(InventDim));
除了tabchanged方法对ActionPane Tab切换作出响应,我们还需要对用户选择了不同的数据行时更新按钮状态,这种情况我们需要用到FormDataSourceInteractionAttribute特性来标记相应的Interaction类响应方法,它的用法是这样的:
[FormDataSourceInteractionAttribute('PurchLine', 'selectionChanged')]
public void purchLine_DS_selectionChanged()
{
this.init();
this.enableLineActions();
}
这里把方法purchLine_DS_selectionChanged和form的PurchLine数据源联系起来,在Purchase order窗口中如果选择的采购订单行发生了变化,系统会自动通过系统类InteractionService的callEventHandler方法调用purchLine_DS_selectionChanged,这样我们就可以根据选择的记录行更新操作按钮状态,它不带任何的参数,但是我们仍然可以通过“this.page().activeActionPaneTabNames()”来获取当前激活的ActionPane 标签名称。
Page对象也提供了actionPaneControlEnabled和actionPaneControlVisible两个方法来分别使能/禁止和显示/隐藏ActionPane中的控件,用法是这样的:
this.page().actionPaneControlEnabled(formControlStr(PurchTable, buttonPurchCancel), purchTableInteractionHelper.parmbuttonPurchCancelEnabled()); this.page().actionPaneControlVisible(formControlStr(PurchTable, buttonUpdateFacture_RU), purchTableInteractionHelper.parmenableInvoiceButton());
使用Interaction类的好处是将Form UI的更新从窗口中剥离出来单独处理,使得代码更清晰,否则我们必须把更新按钮状态的代码嵌入到表单中,复杂的Form本身代码就很多,就会使得情况更加复杂,不幸的是MSDN上只有很少的关于Interaction class的内容,可能是太简单了不值一提。
[AX]AX2012 Interaction class的更多相关文章
- [AX]AX2012 Number sequence framework :(三)再谈Number sequence
AX2012的number sequence framework中引入了两个Scope和segment两个概念,它们的具体作用从下面序列的例子说起. 法国/中国的法律要求财务凭证的Journal nu ...
- [AX]AX2012 R2 HR Jobs, Positions, Department和Workers
部门.作业(Job的官方翻译)和位置(Position的官方翻译)是AX人力资源管理的基本组织元素,Job和Position在AX有的地方又称作工作和职位,其实这个翻译更为恰当. Job定义的是一个工 ...
- [AX]AX2012 R2 采购订单的“Request change”
在采购订单List或者Detail窗口的操作面板上有一个叫做“Request change”的按钮,如果这个按钮是激活的,采购订单不能直接编辑,而必须先使用这个按钮请求修改后,采购订单才能进入编辑状态 ...
- [AX]AX2012 R2 出差申请和支出报告
AX2012中有个模块叫做出差和支出,用于管理出差以及相关的费用,用户只能在员工自助服务EP站点上提交出差申请.费用报销报告,在Client程序中做审核以及后续的支付动作等,最后形成相关的财务分录. ...
- [AX]AX2012 R2 EP员工自助服务中的产品不能显示图片的问题
在员工自助服务EP站点中员工可以通过Order products自助提交采购申请,在正确设置员工采购目录后会罗列出允许员工购买的产品,每个产品都可带有图片,我们可以通过Product image来为产 ...
- AX2012导Demo数据
看到这篇文章后http://www.cnblogs.com/duanshuiliu/archive/2012/07/18/2597645.html,为了大家的方便就分享下 关于AX2012的导Demo ...
- Consuming a Web Service in AX 2012
Consuming a Web Service in AX 2012 在AX2012版本中如果想调用外部的Web Service变得非常容易. 第一步,在VS中创建一个Web Service并发布 第 ...
- [AX2012 R3]在SSRS报表中使用QR二维码
AX2012是自带生成QR二维码的类,可以很方便的用在SSRS报表中,下面演示如何在RDP的报表中使用二维码,首先从定义临时表开始: 字段URL是要用于二维码的字符串,QrCode是container ...
- [AX2012 R3]关于Alerts
AX2012提供两种类型的Alert,Change-based alert和Due-date-based alert,前者用于在对新建记录.删除记录.记录的某个指定字段被改变的时候发出提醒,后者则是用 ...
随机推荐
- openvpn之server配置篇
openvpn server的配置路径下有大约如下文件: [root@localhost server]# ll total -rw-r-----. nobody nobody Sep ca.crt ...
- SpringBoot的文件下载
SpringBoot的文件下载 2017年11月29日 10:32:20 阅读数:3907 SpringBoot的文件下载方法有很多,此处只记录使用Spring的Resource实现类FileSyst ...
- ubuntu16.04安装workbench
sudo dpkg -i mysql-workbench-community-6.3.10-1ubuntu16.04-amd64.deb 报错: Selecting previously unsele ...
- Spring @Value注解问题
xml配置了下面标签:<context:property-placeholder location="classpath:xxx.properties" /> 用spr ...
- webpack2--webpack 4.X 快速创建demo
准备工作 1.新建文件夹:webpack-demo(下面我们简称该文件夹为根目录),在根目录下面建两个文件夹,分别为src和dist. 1).src文件夹:用来存放我们编写的javascript代码, ...
- android 开发 ANR
记录一下: 问题出现原因:自定义加载对话框导致,查明是否有引用dialog的地方.
- Android 开发 打开默认浏览器发生崩溃
Android 开发 打开默认浏览器发生崩溃. 代码如下: Intent intent = new Intent(); intent.setAction("Android.intent.ac ...
- 自然语言交流系统 phxnet团队 创新实训 个人博客 (七)
使用Lucene 3.0.0的结构遍历TokenStream的内容. 以前版本的Lucene是用TokenStream.next()来遍历TokenStream的内容, 目前的版本稍微修改了一下, 使 ...
- OpenGL 阴影之Shadow Mapping和Shadow Volumes
先说下开发环境.VS2013,C++空项目,引用glut,glew.glut包含基本窗口操作,免去我们自己新建win32窗口一些操作.glew使我们能使用最新opengl的API,因winodw本身只 ...
- selenium+java+chrome环境搭建
我只能说因为版本冲突,简直太折腾了,而搜了无数个博友的帖子才找到正确条案,就不能好好的写篇文章吗? 最近真的是太闲太闲了,平时没事总得搞点技术,不然心里感觉好空虚, 最近看上了selenium,所以试 ...