在AX2012的Form开发中,微软引入了新的控件ReferenceGroup,它用在Lookup其他表RecId的时候显示更人性化的字段,它的使用还必须从表的索引说起。AX2012的表有这些索引(http://msdn.microsoft.com/en-us/library/hh812105.aspx):

Primary key:主键用来唯一标识一条纪录,比如InventTable的ItemIdx索引,包含ItemId字段,用它标识唯一的一个物料,AX2012要求主键必须只有一个字段,当然必须是唯一的。

Alternate Key:可以包含多个字段且索引必须是唯一的,其属性AllowDuplicated=No,AlternateKey=yes,可以把Alternate key设为表的主键,前提是只包含一个字段。对于ValidateTimeState的表可以在Alternate key上设置ValidateTimeStateKey属性。

Surrogate Key:就其说明来讲是指机器产生的唯一键,一般就是纪录的RecId,表的CreatedRecIdIndex=Yes创建Surrogate key,Surrogate key可以设置为表的主键。

Relacement Key:表的Replacement key属性下可以选择表的某个Alternate key,在设置Replacement key时,表的AutoIdentification filed group下自动包含Replacement key的字段,其意义是人能看懂的键,和Surrogate key对应。

ReferenceGroup控件就是依靠Surrogate key、Replacement Key和Autoidentification字段组来工作的,比如我们有个表叫做ProdCharge,包含ProdId、ChargeId和Qty三个字段,用来表示某个工单下的某车重量,ProdId和ChargeId表示工单下的某个车次,组合成一个Alternate Key,同时设置为表的Replacement key:

我们要在另外一张发货表DispatchPick中引用ProdCharge,可以在DispatchPick新建ProdId、ChargeId字段来表示要出货的某个车次,但是更方便的是直接使用ProdCharge的RecId:

新建一个DispatchPick form来编辑出货表DispatchPick,以前的方法在Lookup prodCharge表的时候你可能看到ProdCharge表的Recid一栏的内容,但是在AX2012中当我们把DispatchPick的ChargeRecId字段拖到Form上的时候会自动生成一个ReferenceGroup的控件:

注意它的Referencefield是DispatchPick的ChargeRecId字段,而RelacementFieldGroup自动设置为AutoIdentification,这里是可以选择其他字段组的比如AutoLookup字段组,我们这里就选择为ProdCharge表的AutoLookup字段组,运行一下DispatchPick form来看看:

可以看到Reference控件下包含了来自于ProdCharge的3个字段,分别是工单、车次号和数量,下拉Lookup的时候也出现ProdCharge的AutoLookup字段组的内容,而实际上保存在DispatchPick表中的ProdCharge数据仅仅是其RecId,这就是ReferenceGroup的作用,使用对我们没有意义的代码来关联表,在Lookup的时候则呈现更加人性化的字段,在以前的版本中这需要代码重载控件的Lookup方法来自定义Lookup form来实现,还必须加入一些display方法来显示来自于父表的prodid、chargeid这些信息,而使用referencegroup这些就变得很自然而不需要一行代码。当然AX2012也支持重载Lookup方法(http://msdn.microsoft.com/EN-US/library/hh185372),RefereceGroup控件还多了一个LookupReference方法(http://msdn.microsoft.com/EN-US/library/aa627966)。

另外在form的Datasource节点下多了一个Reference data source节点,用它来显式的定义一个引用数据源,这一般只在需要自定义引用数据源的AllowDeferredLoad、OnlyFetchActive属性的时候需要(http://msdn.microsoft.com/EN-US/library/gg845085)。

From: http://www.cnblogs.com/duanshuiliu/archive/2012/09/04/2669984.html

How to understand ReferenceGroup control on Form[AX2012]的更多相关文章

  1. Tutorial: WPF User Control for AX2012

    原作者: https://community.dynamics.com/ax/b/goshoom/archive/2011/10/06/tutorial-wpf-user-control-for-ax ...

  2. Business Unit Lookup in Form

    Just add the below code in lookup() of StringEdit control in Form to get the Business Unit Lookup: p ...

  3. 细说angular Form addControl方法

    在本篇博文中,我们将接触angular的验证.angular的验证是由form 指令和ngModel协调完成的.今天博主在这里想要说的是在验证在的一种特殊情况,当验证控件没有没有name属性这是不会被 ...

  4. Using Controls in a Form Design [AX 2012]

    Using Controls in a Form Design [AX 2012] This topic has not yet been rated - Rate this topic Update ...

  5. C#:将子Form加入父Form中

    实现的功能:已建立了多个子Form界面,在父Form界面左面,点击不同标题的链接文本,父Form界面右面显示不同的子界面内容. 具体如下: 1.加入split拆分器控件 2.在splitControl ...

  6. angular2 学习笔记 ( Form 表单 )

    refer : https://angular.cn/docs/ts/latest/guide/forms.html https://angular.cn/docs/ts/latest/cookboo ...

  7. Building Forms with PowerShell – Part 1 (The Form)

    For those of you familiar with Scripting languages you are probably used to using alternate applicat ...

  8. [精]Oracle APEX 5.0 入门教程(一) Form表单

    Oracle APEX Tutorial for Beginners (APEX 5.0) 1- Introduction 2- Create Workspace 3- Work with Works ...

  9. Sending form data

    https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data This arti ...

随机推荐

  1. 【阿里云产品公测】离线归档OAS,再也不用担心备份空间了

    [阿里云产品公测]离线归档OAS,再也不用担心备份空间了 作者:阿里云用户莫须有3i 1 起步  1.1 初识OAS  啥是OAS,请看官方说明: 引用: 开放归档服务(Open Archive Se ...

  2. 明风:分布式图计算的平台Spark GraphX 在淘宝的实践

    快刀初试:Spark GraphX在淘宝的实践 作者:明风 (本文由团队中梧苇和我一起撰写,并由团队中的林岳,岩岫,世仪等多人Review,发表于程序员的8月刊,由于篇幅原因,略作删减,本文为完整版) ...

  3. Android开发——实现固定在ScrollView顶部的View,类似于新浪微博的评论列表的顶部

    现在很多App都实现了这个功能,例如新浪微博评论页面的评论.转发.赞的数字可以固定在屏幕上方.我个人很喜欢这种设计,所以利用一点空余时间简单实现了一个类似的功能. 先来看一下上面这张图的效果 这个是新 ...

  4. Spring Data:企业级Java的现代数据访问技术(影印版)

    <Spring Data:企业级Java的现代数据访问技术(影印版)>基本信息原书名:Spring Data:Modern Data Access for Enterprise Java作 ...

  5. ibatis mysql replace into 返回ID

    目前只能在replace into 之后,重新查询数据

  6. 精益求精, ePub 电子书制作手记

    什么是 ePub ePub 是 Electronic Publication 的缩写,意为电子出版,是一个自由的开放标准,属于一种可以“自动重新编排”的内容,也就是文字内容可以根据阅读设备的特性,以最 ...

  7. Oracl用代码建标

    建标还可以通过编写代码的方式实现,这样在建许多类似的表的时候可以极高建表的效率. create table SCORE                   --建立表名(                ...

  8. log4net保存到数据库系列四、完整代码配置log4net

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...

  9. 每日一词【命令行CMD】

    CURL 中文:命令行URL下载 英文解释:CommendLine Uniform Resource Locator 使用场景: 文件传输 curl是利用URL语法在命令行方式下工作的开源文件传输工具 ...

  10. MongoDB - The mongo Shell, Write Scripts for the mongo Shell

    You can write scripts for the mongo shell in JavaScript that manipulate data in MongoDB or perform a ...