顯示、編輯和建立資料來源中的記錄。

說明

如果您新增顯示表單控制項,則使用者可以顯示記錄的所有欄位,或只顯示您所指定的欄位。 如果您新增編輯表單控制項,則使用者可以編輯這些欄位、建立一筆記錄,以及將這些變更儲存至資料來源。

範例表單和表單檢視控制項

如果您新增資源庫控制項,則可以設定它來顯示資料來源中的表格,然後設定表單來顯示使用者在資源庫中選取的記錄。 您也可以新增一個或多個按鈕控制項,而使用者可以選擇這些控制項來儲存編輯、取消編輯,以及建立一筆記錄。 一起使用控制項,即可建立完整解決方案

選取記錄

針對任一類型的表單,您可以將其 DataSource 屬性設定為記錄表格,並設定表單的 Item 屬性來顯示該表格中的特定記錄。 例如,您可以將表單的 Item 屬性設定為資源庫控制項的 SelectedItem 屬性。 使用者選取資源庫中的記錄時,相同的記錄會出現在表單中,不同之處在於表單可以顯示更多欄位。 如果使用者返回資源庫,並選取不同的記錄,則資源庫的 SelectedItem 屬性會變更。 這項變更會更新表單的 Item 屬性,接著顯示新選取的記錄。

每個表單控制項都會包含一個或多個卡片控制項。 設定卡片的 DataField 屬性,即可指定卡片所顯示的欄位和其他詳細資料

建立記錄

編輯表單控制項處於「編輯」模式時,使用者可以更新表單的 Item 屬性中所指定的記錄。 進行檢查後,Mode 屬性會傳回「編輯」。

不過,編輯表單控制項處於「新增」模式時,會忽略 Item 屬性。 表單不會顯示現有記錄;相反地,每個欄位中的值都會符合您用來設定表單的資料來源的預設值。 NewForm 函式會讓表單切換至此模式。

例如,您可以設定按鈕的 Text 屬性以顯示 [新增],並將其 OnSelect 屬性設定為包含 NewForm 函式的公式。 如果使用者選取該按鈕,表單會切換成「新增」模式,讓使用者可以建立以已知值開始的記錄。

如果執行 ResetForm 函式,或成功執行 SubmitForm 函式,則表單會切換回「編輯」模式。

  • 您可以設定按鈕的 Text 屬性以顯示 [取消],並將其 OnSelect 屬性設定為包含 ResetForm 函式的公式。 如果使用者選取該按鈕,則會捨棄任何進行中的變更,而且表單中的值同樣地會符合資料來源的預設值。
  • 您可以設定按鈕的 Text 屬性以顯示 [儲存變更],並將其 OnSelect 屬性設定為包含 SubmitForm 函式的公式。 如果使用者選取該按鈕,並更新資料來源,則會將表單中的值重設為資料來源的預設值。

儲存變更

如果您如前一節所述建立 [儲存變更] 按鈕,則使用者可以建立或更新記錄,然後選取該按鈕以將這些變更儲存至資料來源。 相反地,只要設定影像控制項與 SubmitForm 函式,即可設定該控制項或一些其他控制項來執行相同的工作。 在任何情況下,ErrorErrorKindOnSuccessOnFailure 屬性提供結果的回饋。

SubmitForm 函式執行時,會先驗證使用者想要提交的資料。 如果必要欄位未包含值,或另一個值不符合某個其他條件約束,則會設定 ErrorKind 屬性,並執行 OnFailure 公式。 您可以設定 [儲存變更] 按鈕或其他控制項,讓使用者只有在資料有效時才能選取它 (亦即,如果表單的 Valid 屬性是 true)。 請注意,使用者不僅必須更正問題,還必須重新選取 [儲存變更] 按鈕 (或選取 [取消] 按鈕來捨棄變更,如先前所述) 來重設 ErrorErrorKind 屬性。

如果資料通過驗證,則 SubmitForm 會將它傳送給資料來源,而根據網路延遲,這可能需要一些時間。

  • 如果提交成功,則會清除 Error 屬性、將 ErrorKind 屬性設定為 ErrorKind.None,並執行 OnSuccess 公式。 如果使用者已建立記錄 (亦即,如果表單先前處於「新增」模式),則表單會切換成「編輯」模式,讓使用者可以編輯新建立的記錄或不同的記錄。
  • 如果提交失敗,Error 屬性會包含資料來源中的使用者易記錯誤訊息,以說明該問題。 根據問題適當地設定 ErrorKind 屬性,並執行 OnFailure 公式。

某些資料來源可以偵測到兩個人同時嘗試更新相同記錄。在此情況下,ErrorKind 會設定為 ErrorKind.Conflict,而補救方法是使用另一位使用者的變更來重新整理資料來源,並重新套用這位使用者所進行的變更。

提示︰如果您在表單上提供 [取消] 按鈕,讓使用者可以放棄進行中的變更,請將 ResetForm 函式新增至按鈕的 OnSelect 屬性,該屬性甚至也會包含 Navigate 函式來變更螢幕。 否則,表單將會保留使用者的變更。

版面配置

根據預設,卡片放置在電話應用程式的單一資料行和平板電腦應用程式的三個資料行中。 您可以指定表單有多少資料行,以及卡片是否應該在您設定表單時貼齊它們。 這些設定不會被公開為屬性,因為它們只用來設定卡片的 XYWidth 屬性。

如需詳細資訊,請參閱了解資料表單版面配置

主要屬性

DataSource – 包含使用者將顯示、編輯或建立的記錄的資料來源。

  • 如果您未設定這個屬性,使用者就無法顯示、編輯或建立記錄,而且不會提供任何額外的中繼資料或驗證。

DefaultMode - 表單控制項的初始模式。 請參閱以下模式描述,查看可接受的值和其意義。

DisplayMode - 在表單控制項內適用於資料卡和控制項的模式。

衍生自 Mode 屬性基礎,且無法獨立設定:

Mode DisplayMode 說明
FormMode.Edit DisplayMode.Edit 資料卡和控制項可以編輯,且準備好接受記錄的變更。
FormMode.New DisplayMode.Edit 資料卡和控制項可以編輯,且準備好接受新記錄。
FormMode.View DisplayMode.View 資料卡和控制項無法編輯和最佳化以供檢視。

ErrorSubmitForm 函式失敗時,針對此表單所顯示的使用者易記錯誤訊息。

  • 這個屬性僅適用於編輯表單控制項。
  • 只有在執行 SubmitFormEditFormResetForm 函式時,這個屬性才會變更。
  • 如果未發生錯誤,則這個屬性會「空白」,而且 ErrorKind 會設定為 ErrorKind.None
  • 可能的話,所傳回的錯誤訊息會是使用者的語言。 某些錯誤訊息直接來自資料來源,而且可能不是使用者的語言。

ErrorKind – 如果在執行 SubmitForm 時發生錯誤,則為所發生錯誤的類型。

  • 僅適用於編輯表單控制項。
  • 這個屬性的列舉與 Errors 函式的列舉相同。 編輯表單控制項可以傳回這些值︰
ErrorKind 說明
ErrorKind.Conflict 另一位使用者已變更同一筆記錄,因而導致變更衝突。 執行 Refresh 函式以重新載入記錄,並重新嘗試變更。
ErrorKind.None 錯誤的類型未知。
ErrorKind.Sync 資料來源已報告錯誤。 如需詳細資訊,請檢查 Error 屬性。
ErrorKind.Validation 偵測到一般驗證問題。

ItemDataSource 中使用者將顯示或編輯的記錄。

LastSubmit – 最後一個成功提交的記錄,包括任何伺服器產生的欄位。

  • 這個屬性僅適用於編輯表單控制項。
  • 如果資料來源自動產生或計算任何欄位 (例如具有唯一號碼的 ID 欄位),則在成功執行 SubmitForm 之後,LastSubmit 屬性會有這個新值。
  • 這個屬性的值位於 OnSuccess 公式中。

Mode – 控制項處於「編輯」或「新增」模式。

Mode 說明
FormMode.Edit 使用者可以使用表單來編輯記錄。 表單卡片中的值會預先填入現有記錄,供使用者進行變更。 如果成功執行 SubmitForm 函式,則會修改現有記錄。
FormMode.New 使用者可以使用表單來建立記錄。 表單控制項中的值會預先填入資料來源中記錄的預設值。 如果成功執行 SubmitForm 函式,則會建立記錄。
FormMode.View 使用者可以使用表單來檢視記錄。 表單控制項中的值會預先填入資料來源中記錄的預設值。

進行下列任何變更時,表單會從「新增」模式切換成「編輯」模式: - 已成功提交表單,並建立記錄。 如果資源庫設定為自動將選取項目移至這筆新記錄,則針對建立的記錄,表單將會處於「編輯」模式,讓使用者可以進行其他變更。 - 執行 EditForm 函式。 - 執行 ResetForm 函式。 例如,使用者可以選取已使用此函式所設定的 [取消] 按鈕。

OnFailure – 資料作業失敗時,應用程式的回應方式。

  • 這個屬性僅適用於編輯表單控制項。

OnReset – 重設編輯表單控制項時,應用程式的回應方式。

  • 這個屬性僅適用於編輯表單控制項。

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

  • 這個屬性僅適用於編輯表單控制項。

Unsaved – 如果編輯表單控制項包含尚未儲存的使用者變更,則為 true。

  • 這個屬性僅適用於編輯表單控制項。
  • 使用這個屬性,可以警告使用者:他們會遺失任何未儲存的變更。 若要防止使用者在儲存目前記錄的變更之前選取資源庫控制項中的不同記錄,請將資源庫的 Disabled 屬性設定為 Form.Unsaved,同樣地停用重新整理作業。

Updates – 寫回表單控制項中所載入記錄的資料來源的值。

  • 這個屬性僅適用於編輯表單控制項。
  • 使用這個屬性,從控制項內的卡片擷取欄位值。 您接著可以透過 Patch 函式呼叫或另一個由連線所公開的方法,使用這些值來手動更新資料來源。 如果您使用 SubmitForm 函式,則不需要使用這個屬性。
  • 這個屬性會傳回值記錄。 例如,如果表單控制項包含 NameQuantity 欄位的卡片控制項,而且這些卡片的 Update 屬性值分別傳回 "Widget" 和 10,則表單控制項的 Updates 屬性會傳回 { Name: "Widget", Quantity: 10 }

Valid卡片編輯表單控制項是否包含已可提交給資料來源的有效項目。

  • 這個屬性僅適用於編輯表單控制項。
  • 表單控制項的 Valid 屬性會彙總表單中所有卡片控制項的 Valid 屬性。 只有在該表單的所有卡片中的值都有效時,表單的 Valid 屬性才會是 true;否則,表單的 Valid 屬性是 false
  • 若只要在表單中的資料有效但尚未提交時才啟用按鈕來儲存變更,請將按鈕的 Enabled 設定為以下公式︰

    SubmitButton.Enabled = IsBlank( Form.Error ) || Form.Valid

其他屬性

BorderColor – 控制項框線的色彩。

BorderStyle – 決定控制項的框線為實線虛線點線

BorderThickness – 控制項框線的粗細。

Fill – 控制項的背景色彩。

Height – 控制項的頂端和底部邊緣之間的距離。

Visible – 控制項顯示或隱藏。

Width – 控制項左邊緣與右邊緣之間的距離。

X – 控制項左邊緣與其父容器 (沒有父容器時則為螢幕) 左邊緣之間的距離。

Y – 控制項上邊緣與其父容器 (沒有父容器時則為螢幕) 上邊緣之間的距離。

詳細資訊

如需表單運作方式的完整概觀,請參閱了解資料表單