我需要使系统中的某些字段成为必需的。我看到在自定义的属性列表中,屏幕上的属性有一个“必需”复选框。
是否需要在字段属性中执行任何其他步骤以使其成为必需并进行持久检查?
我需要使系统中的某些字段成为必需的。我看到在自定义的属性列表中,屏幕上的属性有一个“必需”复选框。
是否需要在字段属性中执行任何其他步骤以使其成为必需并进行持久检查?
用于根据需要设置字段并强制执行它的最佳方法是使用PXDefaultAttribute。稍后会详细介绍,首先我将讨论布局编辑器的必需设置。
可以根据需要标记字段而不强制它具有值。这可以看作是场旁边的一颗红星。
为此,请自定义您现有的屏幕并按照以下 3 个简单步骤操作
在对字段设置PXDefaultAttribute之前,建议先了解该字段是如何定义的。
首先要看的是DAC级别。在字段上使用元素检查器(快捷键 Ctrl + Alt + 单击)将为我们提供所需的信息。记下数据字段,然后单击操作并查看数据类源...
在此屏幕上,我们需要确保该字段还没有 PXDefaultAttribute。
在大多数情况下,将其设置在 DAC 级别被认为是一种不好的做法,因为引用此字段的每个屏幕都会验证它是否包含一个值。最好使用 CacheAttached 在每个屏幕上完成。
现在我们需要检查图形代码以查看 PXDefaultAttribute 是否已经存在。我们再次使用元素检查器,但这次我们单击查看业务逻辑源...
我们需要找到具有此签名的函数并检查是否可以在其上找到 [PXDefault]:
protected void SOOrder_OrderDesc_CacheAttached(PXCache sender) { }
如果什么都没有,您可以放心地应用您的自定义。
最后,要在图表级别强制执行必填字段,请遵循此模式。
[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 对字符串最有用。
可以在我在这篇文章底部添加的链接中找到有关这些主题的更多信息。
当尝试在没有描述值的情况下保存时,前面代码的这个结果会给你这个。
使用布局编辑器 与 PXDefaultAttribute 结合使用的必需设置
如果设置正确,PXDefaultAttribute 将验证数据,但在某些情况下,UI 不会反映该字段是必需的。一个很好的例子是 PXNumberEdit 元素,即使使用 PXDefault,红星也不会出现在字段旁边。如果你真的需要红星,你可以将Required设置设置为true,如本文顶部所述。另一种方法是在字段的 PXUIField 属性中将 Required 参数设置为 true。
例如 [PXUIField(DisplayName = "我的值", 必需 = true)]
以下是扩展此主题的信息链接