Экран: 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)
{ }
}}
Это первый раз, когда мне приходится изменять свойства во время выполнения, поэтому я не знаю, чего не знаю.