3.4.1 表單

來源:互聯網
上載者:User

標籤:des   style   color   width   c   資料   

  1. 目標
  • 標識主片段,來裝扮表單
  • 給表單添加資料來源,來定義表單顯示什麼資料
  • 給表單添加控制項,來顯示資料
  • 修改表單方法,來控制開啟和關閉時它的行為
  • 決定在哪裡放代碼
  • 運行時修改擷取的資料
  1. 介紹

本科提供綜合功能,使用表單來與終端使用者互動.

討論一下話題:

  • 表單架構
  • 擷取資料
  • 在船體中放置代碼
  • 先進的控制項
  • 特殊表單
  1. 情境

系統開發人員,要建立一個新表單,它有多個資料來源連結在一起,一個欄位從另一個欄位計算而來,欄位沒有連結到資料來源,當表單開啟時,初始化欄位.同時,它也要調查其他類型的表單和表單控制項.

  1. 架構

一個表單提供使用者和資料庫的互動.它關注下面的動作:

  • 顯示和接收資料
  • 過濾資料
  • 排序資料
  • 修改資料

應用和商務邏輯沒有融入表單,而是在底層的表和類上編程.

在AOT中,一個表單由五個組件構成:

  • 方法
  • 資料來源
  • 部分
  • 設計
  • 許可權

本課詳細介紹三個主要節點:方法,資料來源和設計.

  1. 方法

系統產生方法,也就是系統方法,標準方法或對象方法,附加在表單上,用於控制啟動和關閉表單.這些時間按順序地被覆蓋,以初始化表單.預設地,系統方法不顯示.要覆蓋一個系統方法,在方法節點右鍵,選擇覆蓋方法,並選擇要覆蓋的方法.

另外,可以添加方法,並在表單的任何位置調用.這是好的實踐,在這裡添加方法,而不是在表單設計的對象深層寫大量代碼,這樣能使本地代碼更簡潔.

變數定義在類聲明中,可以在所有表單方法中訪問,用於持有表單控制項的狀態.

下面是CustTable表單的方法.表單系統方法task,run,init和close已經被覆蓋.所有其他方法已經被添加到Methods節點.

  1. 資料來源

資料來源定義表單和資料庫之間的介面.一個實體被添加為每個表.每個資料來源的屬性工作表明資料來源間的關係.每個資料來源也有系統方法,可以被覆蓋,用以控制顯示資料或操作事件.

資料來源包含表中的所有欄位.再次,所有欄位有屬性和系統方法可以被覆蓋.這些方法控制下列功能:

  • 欄位指定導航(過濾,尋找,跳轉到主表)
  • 驗證欄位
  • 修改欄位
  1. 設計

表單定義的設計,是表單和使用者的介面,它控制布局和資料表現.設計由調用的控制群組件構成.一些控制項用於編輯和顯示資料,另一些用於控制表單的布局.

一個表單的一般設計如下

Design

       
 

Tab

     
   

TabPage

   
     

Grid

 
       

Fields to be displayed on Grid

   

TabPage

   
     

Field Groups

 
       

Fields in Field Group

設計上的所有控制項有屬性和方法,並且可以被覆蓋

在設計節點下,和設計節點一樣,這裡也有一個設計列表節點.

  1. 在表單中處理對象

在表單中編程時,你能引用對象個體,例如,資料來源或表單的控制項,使用kernel類,來構建他們,或重寫對象自己的方法.

表單中的所有方法都關聯到一個對象.該對象能使用this,從與它關聯的方法中訪問.注意this引用時關聯到所有你編程.

當從方法中引用的一個對象,沒有關聯對象,你需要使用對象處理.下面是對象和如何訪問他們

Object

Access from X++

FormRun

Element

FormDataSource

<name of data source>_DS

Active record in data source

<name of data source>

FormDataObject

FormDataSource.Object(<fieldId>)

FormDesign

FormRun.design()

Form…Control

指派給控制項的名字,當AutoDeclaration設為Yes時.或element.control(Control::<name of control>)

Query

<name of data source>_Q 或 FormDataSource.Query()

QueryRun

<name of data source>_QR 或 FormDataSource.QueryRun()

 

4 資料來源

資料來源中的表,能被使用者排序或過濾,這是AX的一個重要特性.

表單可以包含任何數量的資料來源,並且每個資料來源能通過定義表之間的關係,連結到表單上的其他資料來源.關係或Dynalinks也能在表單代碼中添加.

一個表單資料來源產生一個查詢,它能以系統中任何其他查詢一樣的方式被執行.

4.1 joins

要從一個表單的兩個表中顯示記錄,指定一個兩個表之間的串連.

在第二個表或被串連的表的JoinSource屬性上指定串連.在這裡填入主要資料源的名字.

你也可以指定join 或link類型.link類型在後面描述.

CustInvoiceJour表單使用串連.CustInvoiceTrans資料來源被串連到CustInvoiceJour資料來源,並且InventDim資料來源被串連到CustInvoiceTrans資料來源.

InventDim串連到CustinvoiceTrans,使用InnerJoin,因為資料被顯示在和CustInvoiceTrans記錄同一個fgrid裡.

4.2 引用資料來源

引用資料來源,是一個資料來源,被連結到父資料來源上.通過代理鍵關係-RecId關係.

要從資料來源中添加代理鍵欄位到表單設計,引用資料來源會自動被建立,

4.3 從X++修改

使用查詢對象來修改表單資料來源中的查詢。該查詢對象能使用<name of data source>_Q 或 FormDataSource.Query()來擷取。

要對查詢做永久修改,這個典型的實現,在FormDataSource.Init()中調用super()後。

在表單中過濾記錄,需喲遵循以下步驟:

  1. 在類聲明中,聲明相關的QueryBuildRange或QueryFilter對象。
  2. 在FormDataSource.Init中,執行個體化range對象。
  3. 在FormDataSource.ExecuteQuery中,在調用super()之前,指派範圍的實際值。

通過添加排序欄位,或添加一個索引給查詢的資料來源,來執行資料排序。作為一個替代,在資料來源的屬性上,制定一個索引。

使用一些彙總欄位綁定排序,會使得資料來源顯示表中的彙總資訊,而不是交易資訊。執行以下步驟,顯示每個產品id的庫存交易的合計數量。

  1. 在資料來源上,使用addGroupByField來按item id 分組。
  2. 添加Sum(Qty),作為SelectionField

4.4 要覆蓋的公用方法

4.4.1 FormDataSource.Init

該方法初始化資料來源,並被FormRun.Init的super()方法調用。當表單開啟時,該方法只被調用一次。

該方法的主要任務是執行個體化查詢,用於擷取資料。

要修改或替換表單自動建立的查詢,在該方法的super()方法後添加操作。

4.4.2 FormDataSource.InitValue

該方法用於使用預設值初始化一個新的記錄。該方法的super()調用底層表的initValue()方法。

如果你要修改系統範圍的,在該表上放代碼。

4.4.3 FormDataSource.Active

資料來源中的新記錄變成活動狀態時,調用該事件。該方法典型地覆蓋,來改變依賴目前記錄的內容的屬性,通常,該方法會:

修改資料來源的許可權

修改欄位的許可權

啟用/禁用按鈕

4.4.4 FormDataSource.LinkActive

每次主要資料元中的活動記錄變更時,被聯結的資料來源就調用該方法。當床底作為系統層開啟,聯結到被調用表單的主要資料源,該方法也會被調用。

4.4.5 FormDataSource.ValidateWrite

該方法驗證一個記錄的插入或更新。該方法的super()調用底層表上相應的方法。

如果你要辨別插入和刪除,在RecId欄位上做一個條件,如果它是update,它只有一個值。

4.4.6 FormDataSource.Write

該方法控制記錄的插入和刪除。該方法的super()調用底層表上相應的方法。

如果你有表單特殊任務要執行,在這裡添加。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.