你如何按照Acumatica的要求标记一个字段?

时间:2017-12-21 22:36:56

标签: c# acumatica acumatica-kb

我要求在系统中创建一些字段。我在自定义项的属性列表中看到,有一个'必需'屏幕属性的复选框。

是否需要在字段属性中执行任何其他步骤才能使其成为必需且持久检查?

1 个答案:

答案 0 :(得分:2)

用于根据需要设置字段并强制执行该字段的最佳方法是使用 PXDefaultAttribute 。稍后详细介绍,首先我将讨论布局编辑器必需设置。

布局编辑器必需设置

可以根据需要标记字段,而不必强制它具有值。这可以看作是场地旁边的一颗红星。

enter image description here

要执行此操作,请自定义现有屏幕并按照以下3个简单步骤进行操作

  1. 从布局编辑器中选择字段。
  2. 确保未选中“过滤器”按钮,这将显示可应用的更多设置。
  3. 必需字段设置为True。
  4. enter image description here

    使用 PXDefaultAttribute

    的必填字段

    在字段上设置 PXDefaultAttribute 之前,建议您探索该字段的定义方式。

    DAC级别的属性

    首先要看的是DAC级别。在字段上使用元素检查器(快捷键Ctrl + Alt + Click)将为我们提供所需的信息。记下数据字段,然后单击操作和查看数据类源...

    enter image description here

    在此屏幕上,我们需要确保该字段还没有PXDefaultAttribute。

    enter image description here

    在大多数情况下,在DAC级别设置它被认为是一个糟糕的实践,因为引用此字段的每个屏幕都将验证它包含一个值。最好通过使用CacheAttached在每个屏幕上完成。

    使用CacheAttached

    在图表级别的属性

    现在我们需要检查图形代码以查看是否已存在PXDefaultAttribute。我们再次使用Element Inspector,但这次我们点击查看业务逻辑源...

    enter image description here

    我们需要找到一个带有此签名的函数,并检查[PXDefault]是否可以找到它:

    protected void SOOrder_OrderDesc_CacheAttached(PXCache sender) { }
    

    如果没有任何内容,您可以安心地应用您的自定义。

    SOOrder代码示例

    最后,要在图表级别强制执行必填字段,请遵循此模式。

    [PXMergeAttributes(Method = MergeMethod.Append)]
    [PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
    protected void SOOrder_OrderDesc_CacheAttached(PXCache sender) { }
    

    PXMergeAttributes MergeMethod有3个可能的值:Append,Merge,Replace。 基本上,这告诉框架如何处理在此DAC字段上找到的属性之间的冲突。

    PXDefault PersistingCheck还有3个值:Nothing,Null,NullOrBlank。 如果不需要该字段但应具有默认值,则使用。这在本文的上下文中没有用。 Null NullOrBlank 确定要完成的验证,其中NullOrBlank主要用于字符串。

    我可以在本帖子底部添加的链接中找到有关这些主题的更多信息。

    以前代码的结果会在尝试保存时没有描述值。

    enter image description here

    使用布局编辑器必需的设置与PXDefaultAttribute

    结合使用

    如果正确设置,PXDefaultAttribute将验证数据,但在某些情况下,UI不会反映该字段是必需的。一个很好的例子是PXNumberEdit元素,即使使用PXDefault,红色星也不会出现在字段旁边。如果您确实需要红色星形,可以将Required设置为true,如本文顶部所述。另一种方法是在字段的PXUIField属性中将Required参数设置为true。

    e.g。 [PXUIField(DisplayName =“我的值”,必需= true)]

    以下是有关此主题展开的信息性链接

    How to make a field mandatory

    Append and Replace of DACs Attributes / PXMergeAttributes

    PXDefault API Reference

相关问题