PXPersistingCheck.NullOrBlank在运行时设置

时间:2019-09-19 14:01:44

标签: acumatica

屏幕: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)
    { }
}}

这是我第一次在运行时更改属性,所以我不知道自己不知道的事情。

1 个答案:

答案 0 :(得分:1)

我将使用缓存附加事件将默认/必需设置附加到属性。您必须合并属性,并从联系人到BAccount遵循选择器。然后将其与创建的常量进行比较。该代码在我的演示环境中都有效,全部在CustomerMaint图中。

npm install create-react-app

create-react-app myapp