使用實體表單控制項新增 Common Data Service 實體的多樣化表單,更快速建立應用程式。

如需實體表單控制項的簡介,請參閱部落格文章︰Common Data Service 的新實體表單控制項 (實驗性功能)

重要︰請注意部落格貼文中所述之「實體表單」的實驗性質,並且至少目前在生產應用程式中小心使用實體表單控制項。

主要屬性

以下是實體表單控制項的索引鍵屬性。

DataSource - 指定要顯示的記錄包含在其中的資料來源。
注意︰Common Data Service 中的實體目前只支援實體表單控制項的資料來源。

Pattern – 指定想要在實體表單控制項中顯示的表單樣式。 使用 FormPattern 列舉設定此屬性。

  • FormPattern.List – 顯示記錄的表格式清單。
  • FormPattern.CardList – 顯示記錄的卡片清單。
  • FormPattern.Details – 顯示檢視或編輯單筆記錄詳細資料的表單。
  • FormPattern.None – 未明確指定任何樣式。 平板電腦應用程式預設為 List,手機應用程式預設為 CardList

Item – 指定資料來源中實體表單控制項應顯示的記錄。 Pattern 設為FormPattern.Details 時,才使用這個屬性。

Selected – 取得目前選取的記錄。
範例︰如果實體表單控制項顯示銷售單記錄的清單,則 Selected 屬性將提供目前選取的記錄。 您也可以存取記錄的欄位。 (例如,將所選記錄的 Account 欄位值指定為 Selected.Account。)

SelectableFields – 指定應該顯示為連結的欄位。 使用此語法,設定這個屬性的值︰
{Field1Name : true, Field2Name : true}
範例︰如果要 SalesOrderIdAccount 在表單中顯示為連結,請將該表單的 SelectableFields 屬性設定為下列這個值︰
{SalesOrderId : true, Account : true}

SelectedField – 決定按一下或點選的欄位。 這只適用於指定為 SelectableFields 的欄位。
範例︰ 如果您將 SelectableFields 屬性設定為 {SalesOrderId : true, Account : true},而且使用者按一下或點選 Account 欄位,則 SelectedField.Account 會設定為 true。

OnFieldSelect – 應用程式在使用者按一下或點選欄位時回應的方式。 這只適用於指定為 SelectableFields 的欄位。

Mode – 決定表單的模式。 若要變更模式,請使用 ViewFormEditFormNewForm 函式。 只有在 Pattern 屬性是設定為 FormPattern.Details 時,這些函式才會運作。 將 Mode 屬性的值設定為 FormMode 列舉的值。

  • FormMode.View – 可讓使用者檢視記錄,但是無法編輯或新增記錄。
  • FormMode.Edit – 可讓使用者編輯記錄。
  • FormMode.New – 可讓使用者新增記錄。

OnSuccess – 應用程式在資料作業成功時的回應方式。

OnFailure – 應用程式在資料作業不成功時的回應方式。

Unsaved – 決定使用者編輯的記錄是否有未儲存的變更。

相關函式

您可以搭配編輯表單控制項的實體表單控制項來使用這些共用函式。 只有在 Pattern 屬性是設定為 FormPattern.Details 時,這些函式才可搭配實體表單控制項使用。

ViewForm – 將實體表單控制項的 Mode 屬性設定為 FormMode.View

EditForm – 將實體表單控制項的 Mode 屬性設定為 FormMode.Edit

NewForm – 將實體表單控制項的 Mode 屬性設定為 FormMode.New

SubmitForm - 使用者編輯實體表單控制項中的記錄時儲存變更。

ResetForm - 使用者編輯實體表單控制項中的記錄時放棄未儲存的變更。

您已經大致了解各種屬性和函式,讓我們看看這些屬性和函式的實際應用。

注意︰如果您尚未存取 Common Data Service 資料庫,請先建立資料庫再開始進行下列步驟。

顯示記錄清單

後續五個程序提供如何使用實體表單控制項的單一端對端範例。 在此程序中,新增顯示銷售單清單的表單。

  1. 建立空白的平板電腦應用程式。

  2. 將第一個畫面 SalesOrderListScreen 重新命名。

  3. 在 [插入] 索引標籤上,按一下或點選 [Forms],然後按一下或點選 [實體表單 (實驗性)]。

    實體表單控制項隨即新增至畫面。

  4. 實體表單控制項 SalesOrderListForm 重新命名,並調整其大小,以便放大到整個畫面。

  5. 在右窗格中,按一下或點選 [未選取任何資料來源] 文字旁邊的資料庫圖示,然後按一下或點選 [新增資料來源]。

  6. 在連線清單中,按一下或點選您資料庫的連線。

  7. 在實體清單中,按一下或點選 [銷售單],然後按一下或點選 [連接]。

    隨即建立銷售單實體的資料來源,而且 DataSource 屬性 SalesOrderListForm 會設定為資料來源。

    實體表單控制項會顯示銷售單的清單。 使用實體表單控制項即可迅速顯示清單表單,完全不需要手動建立。

    您未設定實體表單控制項的 Pattern 屬性,因此它會預設為 List 模式。 此外,銷售單實體的 DefaultList 欄位群組用來顯示清單表單。 表單亦為動態,會自動反映欄位群組中的任何變更。

  8. (選擇性) 檢視銷售單實體的 DefaultList 欄位群組:

    1. 登入powerapps.com,按一下或點選左方瀏覽窗格中的 Common Data Service,然後按一下或點選 [實體]。
    2. 在實體清單中,按一下或點選 [銷售單],並按一下或點選 [欄位群組] 標籤,然後按一下或點選 DefaultList 欄位群組。

    銷售單清單中的欄位符合此處所列的欄位。

    Common Data Service 中,您可以針對自訂實體修改欄位群組 (而非標準實體) 來變更實體表單控制項顯示之對應表單上出現的欄位。 特別是,使用實體表單控制項來顯示對應表單的所有應用程式,會自動反映欄位群組的所有變更。

顯示記錄的詳細資料

讓我們新增另一個實體表單控制項,顯示您稍早建立的清單中選取之銷售單的詳細資料。

  1. 調整 SalesOrderListForm 以涵蓋半個畫面,並新增第二個實體表單控制項來涵蓋另一半畫面。

  2. 將第二個實體表單控制項重新命名為 SalesOrderDetailsForm,並將其連接到您稍早建立的 [銷售單] 資料來源。

  3. SalesOrderDetailsFormPattern 屬性設定為 FormPattern.Details

    SalesOrderDetailsForm 使用銷售單實體的 DefaultDetails 欄位群組來顯示表單。 和 SalesOrderListForm 一樣,可以迅速顯示記錄詳細資料,完全不需要手動建立表單。

  4. SalesOrderDetailsFormItem 屬性設定為 SalesOrderListForm.Selected

    SalesOrderDetailsForm 將對於使用者在 SalesOrderListForm 中按一下或點選的記錄顯示詳細資料。

  5. 按下 F5 鍵以預覽應用程式,然後按一下或點選左側清單中的銷售單。

    您選取之訂單的詳細資料會出現在右側。

設定欄位,以便巡覽至其他畫面

接著我們將更多畫面新增至我們的應用程式,然後設定實體表單控制項中的欄位在使用者按一下或點選欄位時巡覽至應用程式中的其他畫面。

  1. 將第二個畫面新增至應用程式,並將畫面 SalesOrderDetailsScreen 重新命名。

  2. 剪下 SalesOrderDetailsForm 並將其貼至 SalesOrderDetailsScreen 上,然後調整表單以涵蓋大部分畫面,在最上方留下足以顯示圖示的空間。

  3. SalesOrderDetailsScreen 的左上角附近新增上一步箭頭圖示。

  4. 將上一步箭頭圖示的 OnSelect 屬性設定為 Back 函式。

  5. SalesOrderListScreen 上,調整 SalesOrderListForm 以涵蓋整個畫面。

  6. 按一下或點選 SalesOrderListForm 加以選取。

  7. 在右窗格的 Fields 下,設定 SalesOrderId 以巡覽至 SalesOrderDetailsScreen

    實體表單控制項會將 SalesOrderId 欄位 (清單中第一個資料行) 中的值顯示為連結。

  8. 按下 F5 鍵以預覽應用程式,然後按一下或點選銷售單清單中的連結。

    第二個畫面會開啟並顯示您指定之銷售單的詳細資料。

    若要顯示不同銷售單的詳細資料,請按一下或點選上一步箭頭來返回清單,然後按一下或點選要顯示詳細資料的訂單連結。

使用內容變數進行巡覽

SalesOrderDetailsFormItem 屬性設定為 SalesOrderListForm.Selected,因此 SalesOrderDetailsForm 會顯示使用者在 SalesOrderListForm 中選取之記錄的詳細資料。 您也可以使用您使用表單自訂窗格來設定要巡覽之欄位時所自動建立的 NavigationContext 內容變數,取得所選記錄的內容。

  1. SalesOrderDetailsFormItem 屬性設定為 NavigationContext

  2. 按下 F5 鍵以預覽應用程式,然後按一下或點選銷售單清單中的連結。

    應用程式會開啟 SalesOrderDetailsScreen,並顯示您指定之銷售單的詳細資料。

讓我們深入了解表單自訂窗格如何設定導覽和內容。

SalesOrderListFormSelectableFields 屬性會將 SalesOrderId 指定為可選取的欄位。

我們使用表單自訂窗格設定 SalesOrderId 欄位巡覽至 SalesOrderDetailsScreen 時,這會自動設定。 因此,SalesOrderId 欄位的值會顯示為連結。

SalesOrderListFormOnFieldSelect 屬性將設定為 If 函式,這將決定使用者是否按一下或點選 [銷售單識別碼] 欄位:SalesOrderListForm.SelectedField.SalesOrderId = true

如果函式評估為 true,將以先前所用名為 NavigationContext 的內容變數來開啟 SalesOrderDetailsScreen

我們使用表單自訂窗格來設定 SalesOrderId 欄位巡覽至 SalesOrderDetailsScreen 時,也會自動設定所有這些項目。

因此,使用者按一下或點選 [銷售單識別碼] 欄位時,If 函式會評估為 true,而且將以對應的內容呼叫 Navigate 函式,開啟詳細資料畫面。

注意︰您使用表單自訂窗格時,將會智慧地為您決定 NavigationContext。 使用者按一下或點選 SalesOrderId 時,NavigationContext 將設定為 SalesOrderListForm.Selected,如先前公式所示。 如果我們已指定將巡覽 Account 欄位,則 NavigationContext 會設定為 SalesOrderListForm.Selected.Account,確保傳遞正確的內容。 不過,若要使用該內容,您會需要實體表單控制項以連接到 Common Data Service 的帳戶實體。

編輯和儲存記錄

最後讓我們看看如何編輯並儲存實體表單控制項中的記錄。

  1. SalesOrderDetailsScreen 上,新增編輯圖示,然後將其 OnSelect 屬性設定為此公式︰
    EditForm(SalesOrderDetailsForm)

  2. 在編輯圖示旁新增核取記號圖示,然後將核取記號圖示的 OnSelect 屬性設定為此公式︰
    SubmitForm(SalesOrderDetailsForm)

  3. 按下 F5 鍵以預覽應用程式、按一下或點選 [銷售單識別碼] 的連結來檢視銷售單的詳細資料,然後按一下或點選編輯圖示。

    實體表單控制項的 Mode 設定為 FormMode.Edit,因此您可以編輯記錄。

  4. 將 [訂單狀態] 更新為 [發票]。

  5. 將 [銷售員] 更新為 [WRK014]。

    為了協助您挑選銷售員實體表單控制項會自動呈現多樣化的詳細查閱。 若要產生並顯示此查閱,控制項將使用 Common Data Service 的背景工作角色實體之中的 DefaultLookup 欄位群組。 這將使用背景工作角色實體,因為 [銷售員] 欄位是 Worker 類型。

  6. 按一下或點選核取記號圖示,以便儲存變更。

此步驟是這篇關於如何在應用程式中使用實體表單控制項文章的最後一個步驟。 我們期盼您覺得本文所包含之開始使用實體表單控制項的資訊很實用。 我們期待您提出實體表單控制項的看法,我們將全力協助您將多樣化的表單快速新增至您的應用程式。