我正在尝试创建企业帐户时所需的PriceClassID。我最初是通过编辑DAC来完成的。这引起了一个问题,即无论何时创建员工,都会显示错误,使创建员工成为不可能。
错误:“ CPriceClassID”不能为空
我回到了绘图板上,决定编辑Graph上的属性,这使我可以创建Employee记录。但是现在,当通过“企业帐户”屏幕编辑现有供应商时,出现了相同的错误。我可以在“供应商”屏幕上创建和编辑“供应商”,因为它使用了不同的图形,但是我仍然想实现更优雅的解决方案
[PXDBString(10, IsUnicode = true)]
[PXSelector(typeof(AR.ARPriceClass.priceClassID))]
[PXUIField(DisplayName = "Price Class", Visibility = PXUIVisibility.Visible)]
[PXDefault()]
protected virtual void Location_CPriceClassID_CacheAttached(PXCache sender)
{
}
在“企业帐户”屏幕上使CPriceClassID字段为必填字段的最佳方法是什么,仍然可以使我创建员工和供应商而没有任何错误?
答案 0 :(得分:0)
您可以使用PXUIRequiredAttribute
实现所需的功能。
下面是一个示例,说明如何使用它使仅在特定屏幕上显示为必填字段:
public class LocationExt : PXCacheExtension<PX.Objects.CR.Location>
{
public class BusinessAccountMaintScreen :Constant<string>
{
//"CR.30.30.00" is the page id of the Business Accounts screen
public BusinessAccountMaintScreen():base("CR.30.30.00")
{
}
}
#region UsrCustomField
[PXDBString(10, IsUnicode = true)]
[PXSelector(typeof(AR.ARPriceClass.priceClassID))]
[PXUIField(DisplayName = "Price Class", Visibility = PXUIVisibility.Visible)]
[PXDefault]
// Here we add checking for the current page so that this field will be required only on the Business Accounts screen
[PXUIRequired(typeof(Where<Current<AccessInfo.screenID>, Equal<BusinessAccountMaintScreen>>))]
public virtual String CPriceClassID {get;set;}
#endregion
}