屏幕:AR303000版本/内部版本19.104.0024
我需要将注意力,数据字段,属性设置为 PXPersistingCheck.NullOrBlank在运行时。
逻辑:当CustomerClassID = 2时,“注意”字段必须更改为必填。 否则,将CustomerClassID <> 2设置为不需要。 (应该在运行时并在加载时进行计算)
我尝试使用:
PXDefaultAttribute.SetPersistingCheck<Contact.attention>(cache, row, PXPersistingCheck.NullOrBlank);
PXUIFieldAttribute.SetRequired<Contact.attention>(cache, true);
这是我当前的代码:
namespace PX.Objects.AR
{
public class CustomerMaint_Extension : PXGraphExtension<CustomerMaint>
{
protected void Customer_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
var row = (Customer)e.Row;
CustomerClassID =row.CustomerClassID;
if (row.CustomerClassID == "02")
{
//throw new PXException("Test if you hit this code at runtime");
PXDefaultAttribute.SetPersistingCheck<Contact.attention>(cache, row, PXPersistingCheck.NullOrBlank);
}
else
{
PXDefaultAttribute.SetPersistingCheck<Contact.attention>(cache, row, PXPersistingCheck.NullOrBlank);
}
}
}
}
///我也尝试覆盖屏幕级别的属性:
namespace PX.Objects.AR
{
public class CustomerMaint_Extension : PXGraphExtension<CustomerMaint>
{
[PXDBString(255, IsUnicode = true)]
[PXUIField(DisplayName = "Attention")]
[PXMassMergableField]
[PXMassUpdatableField]
[PXPersonalDataField]
[PXDefault(false, PersistingCheck = PXPersistingCheck.Nothing)]
[PXUIRequired(typeof(Where<Customer.customerClassID, Greater<decimal_1>>))]
protected virtual void Contact_Attention_CacheAttached(PXCache cache)
{ }
}}
这是我第一次在运行时更改属性,所以我不知道自己不知道的事情。
答案 0 :(得分:1)
我将使用缓存附加事件将默认/必需设置附加到属性。您必须合并属性,并从联系人到BAccount遵循选择器。然后将其与创建的常量进行比较。该代码在我的演示环境中都有效,全部在CustomerMaint图中。
npm install create-react-app
create-react-app myapp