在这个系列里,Reinhard将和大家一起探索在AX的窗体上执行操作时,都会触发窗体、窗体数据源和表上的哪些方法,并且是以怎样的顺序触发的。

    这次,我们来看看在窗体上修改或录入数据的情况。图中所示的流程,是在理想情况下的完整触发过程。如果窗体控件、窗体数据源字段或表的验证方法返回False,也可能会提前结束流程。

  1. 用户在窗体上修改或录入数据后,首先触发了该字段的Form.Control.Validate()方法,如果该方法返回的是False,流程到此结束,用户修改或录入数据失败 。
  2. 如果返回的是True,会触发Form.Control.Modified()方法。如果这个字段是窗体数据源里的字段,那么当执行到Super()时,会调用该字段在窗体数据源中的Form.Datasource.Field.Validate()方法。
  3. 在Form.Datasource.Field.Validate()方法中,执行到Super()时,会调用表的Table.ValidateField()方法。Table.ValidateField()执行完毕后,会返回一个Boolean结果。
  4. 接着继续执行Form.Datasource.Field.Validate()方法中Super()以下的代码。Form.Datasource.Field.Validate()方法执行完毕后,会返回一个Boolean结果。如果返回的是False,则继续执行Form.Control.Modified() 方法中Super()以下的代码。
  5. 如果返回的是True,会调用该字段在窗体数据源中的 Form.Datasource.Field.Modified() 方法。
  6. 在Form.Datasource.Field.Modified() 方法中,执行到Super()时,会调用表的Table.ModifiedField()方法。Table.ModifiedField ()执行完毕后,继续执行Form.Datasource.Field.Modified ()方法中Super()以下的代码。
  7. Form.Datasource.Field.Modified ()方法执行完毕后,继续执行Form.Control.Modified() 方法中Super()以下的代码。
  8. Form.Control.Modified()方法执行完毕后,会返回一个Boolean结果。如果返回的是False,用户修改或录入数据失败。

    需要注意的一点是,直到Form.Control.Modified()方法执行结束,修改过的数据,依然在内存中,并未持久化到数据库中。所以在做客制化开发的时候,不应在这个流程中所触发的方法里,直接执行更新数据库的操作。

Dynamics AX 2012 R2 窗体系列 - 在窗体上修改字段时所触发的方法及其顺序的更多相关文章

  1. Dynamics AX 2012 R2 业务系列-销售业务流程

    在博文Dynamics AX R2 业务系列中,Reinhard对这个系列做了一个规划,下面我们就按照规划开始说业务吧. 1.销售的主要职责 其实这里说的职责主要是针对销售文员,并非整天外面满世界跑业 ...

  2. Dynamics AX 2012 R2 业务系列-采购业务流程

    在博文Dynamics AX R2 业务系列中,Reinhard对这个系列做了一个规划,下面我们就按照规划开始说业务吧. 国际惯例,从采购开始. 1.采购的主要职责 简单点说,采购的主要职责,是从供应 ...

  3. Dynamics AX 2012 R2 业务系列

    在之前的一系列博文里,Reinhard介绍了Dynamics AX Demo的安装与配置.相信同学们看完后,都已经成功拥有了一个测试环境. 众所周知的是,ERP作为一个特殊的软件系统,他有着背后的业务 ...

  4. [译]Dynamics AX 2012 R2 BI系列-Cube概览

    https://msdn.microsoft.com/EN-US/library/dd252604.aspx     Cube是一个多维度的结构,它是BI应用开发的基础.本文描述了cube的组成部分, ...

  5. [译]Dynamics AX 2012 R2 BI系列-规划分析的注意事项

    https://msdn.microsoft.com/en-us/library/gg731898.aspx       在开始实施AX的分析特性前,有很多事情要考虑.本文描述了你必须考虑的事情,和在 ...

  6. [译]Dynamics AX 2012 R2 BI系列-分析的架构

    https://msdn.microsoft.com/EN-US/library/dd309691.aspx     下图显示了包含在AX中的SSAS Cube,和用于访问他们的组件.     下面的 ...

  7. Dynamics AX 2012 R2 安装Reporting Services 扩展

    今天Reinhard在VS中部署SSRS报表时,接到以下错误: 部署因错误而被取消.在报表服务器上,验证:-SQL Server Reporting Services 服务是否正在运行. 接着,Rei ...

  8. Dynamics AX 2012 R2 如何处理运行时间较长的报表

    当处理的数据量较多,逻辑比较复杂时,报表可能会超时.为了解决这个问题,Reinhard一直使用SrsReportDataProviderPreProcess来做预处理报表.它会在调用SSRS前,在AX ...

  9. Dynamics AX 2012 R2 电子邮件广播错误 0x80040213

    Dynamics AX 2012 R2 电子邮件广播错误 0x80040213 今天Reinhard在新环境做邮件广播测试时,发现无法发送邮件,并报以下错误: 类"CDO.Message&q ...

随机推荐

  1. hibernate学习(5)——一对多关系表达

    一对多实现 1. 实现类 package com.alice.hibernate02.vo; import java.util.HashSet; import java.util.Set; publi ...

  2. SQL声明变量并赋值

    declare @studentid int //声明一个int型变量 );//设置变量值,tclass 为任意表,classid 为表中任一字段 if(@studentid is not null) ...

  3. Actor模型前奏

    软件系统从观察者模式到事件驱动然后再到消息驱动,经过了不断的抽象.当软件通过消息来交互的时候再没有了直接引用,没有了耦合,所有的一切都变成了异步和并行

  4. 通过命令创建vue项目

    环境要求:  安装有 Node.js. vue. vue-cli . 创建项目: vue init webpack projectName 进入项目,下载依赖: npm install 或者 cnpm ...

  5. drop表后仍占表空间解决办法

    练习oracle时create了很多表,drop表后select * from tab; 网上找了好些方法,但是好多都适用... SQL>purge recyclebin; 回收站已清空.

  6. 两个有意思的模式在ECMAScript中的实现

    简介 本篇文章对设计模式进行了筛选, 只列举两个有意思(坑)的设计实现, 如有错误愿闻其详. 构造函数 ECMAScript中的构造函数和其他语言的有那么点特别之处,可以认为, 一个函数, 如果被以n ...

  7. bash小技巧

    Linux 下shell基本上默认是 bash, 下面是我总结的一些技巧. &  后台运行程序 ,注意退出当前shell后 程序也会退出()   使用子shell, 比如 (cd ../../ ...

  8. 一个js简单的日历显示效果的函数

    用一个函数简单的实现一个月份的日历,效果如下: 这个日历效果有高亮显示,我实现的思维比较简单. 我把上面的日历效果用表格table生成,分成两个部分. 第一个部分:就是前面的第一排,我用一行<t ...

  9. Jesse Livermore的21句投机至理名言

    1.优秀的投机家们总是在等待,总是有耐心,等待着市场证实他们的判断.要记住,在市场本身的表现证实你的看法之前,不要完全相信你的判断.        2.要想在投机中赚到钱,就得买卖一开始就表现出利润的 ...

  10. Nodes “-1” are listed in ADOP_VALID_NODES table but not in FND_NODES table

    While trying to apply patches to upgrade to 12.2.4, adop failed due to the below errors. Validating ...