在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. [数据结构]字典树(Tire树)

    概述: Trie是个简单但实用的数据结构,是一种树形结构,是一种哈希树的变种,相邻节点间的边代表一个字符,这样树的每条分支代表一则子串,而树的叶节点则代表完整的字符串.和普通树不同的地方是,相同的字符 ...

  2. android -- WatchDog看门狗分析

    在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生 ...

  3. iOS菜鸟总结1

    我从第一次接触OC,我觉得想要学好就必须有提前的知识的储备(比如c,java).这样就可更好了解面向对象的这一思想.学起来就不是很吃力了,本来OC就是比较难学的语言.工欲善其事,必先利其器,Xcode ...

  4. 关于报错:'sharedApplication' is unavailable: not available on iOS (App Extension) - Use view controller based

    最近在看Extension相关知识的时候,自己写了个小demo 发现[UIApplication sharedApplication]这个方法敲不出来了, 总是报错:'sharedApplicatio ...

  5. spring事务失效

    最近在做spring 项目中突然发现事务在遇到异常是没有回滚而是提交了,在查了大量的资料之后,算是有了一点头绪,写下来方便以后查找: 前些日子一朋友在需要在目标对象中进行自我调用,且需要实施相应的事务 ...

  6. Oracle 基础 游标

    一:游标的基本原理 游标用来处理从数据库中检索的多行记录(使用SELECT语句).利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集. 为了处理SQL语句,Oracle将在内存中分配一个区域, ...

  7. 剑指Offer40 和为s的连续正数序列

    /************************************************************************* > File Name: 40_Contin ...

  8. hdu-5698 瞬间移动(数论+快速幂)

    题目链接: 瞬间移动 Problem Description   有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝 ...

  9. miniui MVC datagrid数据绑定

    数据绑定 Default.cshtml <div id="datagrid1" class="mini-datagrid" style="wid ...

  10. 根据不同的分辨率选择不同的css文件

    <SCRIPT language=javascript> <!-- Begin if (screen.width == 640) { document.write('<link ...