EditForm、NewForm、SubmitForm、ResetForm 和 ViewForm 函数

适用于:画布应用

查看、编辑或创建一个项,保存内容,以及在 Edit form 控件中重置控件。

概述

这些函数将更改 Edit form 控件的状态。 Form 控件可以采用以下模式之一:

模式 描述
FormMode.Edit 窗体使用现有记录填充,用户可以修改字段的值。 完成后,用户可以将更改保存到记录中。
FormMode.New 表单使用默认值填充,用户可以修改字段的值。 完成后,用户可以将记录添加到数据源。
FormMode.View 窗体使用现有记录填充,但用户无法修改字段的值。

描述

这些函数通常从ButtonImage控件的 OnSelect 公式中调用,以便用户可以保存编辑、放弃编辑或创建记录。 可通过将控件和这些函数结合使用来创建完整的解决方案。

这些函数不返回任何值。

只能在行为公式中使用这些函数。

SubmitForm

在 Button 控件的 OnSelect 属性中使用 SubmitForm 函数可将 Form 控件中的任何更改保存到数据源。

提交任何更改之前,针对被标记为必需或其值有一个或多个约束的字段,此函数会检查验证问题。 此行为与 Validate 函数类似。

SubmitForm 还会检查窗体的 Valid 属性,这包括 Form 控件所包含的 Card 控件的所有 Valid 属性。 如果出现问题,数据将不会提交,并且 Form 控件的 ErrorErrorKind 属性会进行相应的设置。

如果通过验证,SubmitForm 会将更改提交到数据源。

  • 若成功提交,将运行窗体的 OnSuccess 行为,并清除 ErrorErrorKind 属性。 如果窗体之前处于 FormMode.New 模式下,则窗体将返回 FormMode.Edit 模式。
  • 若提交失败,将运行窗体的 OnFailure 行为,并且 ErrorErrorKind 属性会进行相应设置。 窗体的模式保持不变。

EditForm

EditForm 函数将 Form 控件的模式更改为 FormMode.Edit。 在此模式下,将使用 Form 控件的 Item 属性的内容来填充窗体。 如果在窗体处于此模式下时运行 SubmitForm 函数,则将更改(而非创建)记录。 FormMode.Edit 是 Form 控件的默认模式。

备注

当窗体处于编辑模式且项目为 null 时,不会计算数据卡属性,将返回默认值。

NewForm

NewForm 函数将 Form 控件的模式更改为 FormMode.New。 在此模式下, Form 控件的 Item 属性的内容会被忽略,而使用窗体的 DataSource 属性的默认值来填充窗体。 如果在窗体处于此模式下时运行 SubmitForm 函数,则将创建(而非更改)记录。

ResetForm

ResetForm 函数将窗体的内容重置为其初始值,即用户进行任何更改之前的值。 如果窗体处于 FormMode.New 模式下,则窗体将重置为 FormMode.Edit 模式。 还将运行 Form 控件的 OnReset 行为。 还可以使用 Reset 函数重置各个控件,但仅可以从窗体内进行重置。

ViewForm

ViewForm 函数将 Form 控件的模式更改为 FormMode.View。 在此模式下,将使用 Form 控件的 Item 属性的内容来填充窗体。 在此模式下,SubmitFormResetForm 函数不起作用。

DisplayMode 属性

可通过 Mode 属性读取当前模式。 该模式还可以确定 DisplayMode 属性的值,数据卡和控件可在 Form 控件中使用该属性。 通常情况下,如操作控件的 DisplayMode 属性(引用数据卡)一样,将数据卡的 DisplayMode 属性设置为 Parent.DisplayMode(引用窗体):

模式 DisplayMode 描述
FormMode.Edit DisplayMode.Edit 数据卡和控件是可编辑的,可以接受对记录的更改。
FormMode.New DisplayMode.Edit 数据卡和控件是可编辑的,可以接受对新记录的更改。
FormMode.View DisplayMode.View 数据卡和控件不可出于查看目的进行编辑和优化。

语法

SubmitForm( FormName )

  • FormName - 必需。 要提交到数据源的 Form 控件。

EditForm( FormName )

  • FormName - 必需。 要切换到 FormMode.Edit 模式的 Form 控件。

NewForm( FormName )

  • FormName - 必需。 要切换到 FormMode.New 模式的 Form 控件。

ResetForm( FormName )

  • FormName - 必需。 要重置为初始值的 Form 控件。 还会将窗体从 FormMode.New 模式切换到 FormMode.Edit 模式。

ViewForm( FormName )

  • FormName - 必需。 要切换到 FormMode.View 模式的 Form 控件。

示例

请参阅了解数据窗体获取完整示例。

  1. 添加一个 Button 控件,将其 Text 属性设置为显示保存,并将其 OnSelect 属性设置为以下公式:

    SubmitForm( EditForm )

  2. 将 Form 控件的 OnFailure 属性设置为空白,将其 OnSuccess 属性设置为以下公式:

    Back()

  3. Label 控件命名为 ErrorText,然后将 Text 属性设置为以下公式:

    EditForm.Error

    用户选择保存按钮后,Form 控件中的任何更改都会提交到基础数据源。

    • 如果提交成功,则会保存所有更改;或者如果 Form 控件处于新建模式下,则会创建一条记录。 ErrorText空白,且上一个屏幕再次出现。
    • 如果提交失败,ErrorText 会显示用户友好的错误消息,并且当前屏幕会保持可见,以便用户可以更正问题并重试。
  4. 添加一个 Button 控件,将其 Text 属性设置为显示取消,并将其 OnSelect 属性设置为以下公式:

    ResetForm( EditForm ); Back()

    用户选择取消按钮后, Form 控件中的值会被重置为用户对其进行编辑之前的值,上一个屏幕将再次出现,并且如果 Form 控件之前处于新建模式下,则它将返回编辑模式。

  5. 添加一个 Button 控件,将其 Text 属性设置为显示新建,并将其 OnSelect 属性设置为以下公式:

    NewForm( EditForm ); Navigate( EditScreen, None )

    用户选择新建按钮后, Form 控件将切换到新建模式, Form 控件数据源的默认值将填充该控件,并出现包含该 Form 控件的屏幕。 SubmitForm 函数运行时,将创建(而非更新)记录。