Acumatica 取消行插入事件将重置行中的字段
在acumatica应用程序中,我创建了一个自定义页面,用户需要在该页面的网格部分插入数据。为了验证提供的数据,我实现了行插入和行更新事件 问题在于,在rowinserting事件中,我首先使用以下代码抛出一个错误:Acumatica 取消行插入事件将重置行中的字段,acumatica,Acumatica,在acumatica应用程序中,我创建了一个自定义页面,用户需要在该页面的网格部分插入数据。为了验证提供的数据,我实现了行插入和行更新事件 问题在于,在rowinserting事件中,我首先使用以下代码抛出一个错误: cache.RaiseExceptionHandling<DZField.size>(fieldLine, fieldLine.Size, new PXSetPropertyException(string.Format(ValidationMessages.F
cache.RaiseExceptionHandling<DZField.size>(fieldLine, fieldLine.Size,
new PXSetPropertyException(string.Format(ValidationMessages.FIELD_NOT_VALID_FORMAT,
"Size"), PXErrorLevel.RowError));
cache.RaiseExceptionHandling(fieldLine,fieldLine.Size,
新的PXSetPropertyException(string.Format(ValidationMessages.FIELD)格式无效,
“大小”),PXErrorLevel.RowError);
然后我将e.Cancel属性设置为true。但是,当用户更改不正确的值并重新触发事件时,该行将丢失未在事件中处理的值
我还试图不设置e.Cancel属性,而是抛出一个PXException,但即使在这种情况下,行中的其他值也被重置 在插入行事件中,您不是在抛出错误,而是在引发错误 从文档中,RowInserting事件处理程序用于:
protected virtual void DACName_RowInserting(PXCache sender,
PXRowInsertingEventArgs e)
{
throw new PXException(ErrorMessages.FieldIsEmpty,
typeof(PaymentMethodAccount.paymentMethodID).Name);
}
资料来源:
关于行更新,使用e.Cancel进行验证将取消对该行标记为脏的所有字段的更新。有时这是你想要的,但基于你的问题,我认为这是你想要避免的
验证单个字段时,可以使用字段更新事件,该事件不会影响其他字段或引发字段异常。在行事件中抛出错误或在行事件中设置e.Cancel将影响整行