Dynamics AX 2012 R2 窗體系列 - 在窗體上修改字段時所觸發的方法及其順序

    在這個系列裏,Reinhard將和你們一塊兒探索在AX的窗體上執行操做時,都會觸發窗體、窗體數據源和表上的哪些方法,而且是以怎樣的順序觸發的。數據庫

    此次,咱們來看看在窗體上修改或錄入數據的狀況。圖中所示的流程,是在理想狀況下的完整觸發過程。若是窗體控件、窗體數據源字段或表的驗證方法返回False,也可能會提早結束流程。orm

Unnamed-QQ-Screenshot20160226180410

  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()方法執行結束,修改過的數據,依然在內存中,並未持久化到數據庫中。因此在作客製化開發的時候,不該在這個流程中所觸發的方法裏,直接執行更新數據庫的操做。blog

相關文章
相關標籤/搜索