【问题标题】:What is the best way to raise validation exception in Grid Cell, Grid Row, Form View and on Saving?在网格单元格、网格行、表单视图和保存时引发验证异常的最佳方法是什么?
【发布时间】:2020-05-15 13:30:31
【问题描述】:

在网格单元、网格行、表单视图和保存时引发验证异常的最佳方法是什么?

对于字段级别,我将 fieldVerifying 并引发 PropertySetException 它在带有红色标记的字段上显示异常。 在保存句柄 RowPersisting 事件时,如果任何验证失败,它会引发异常,它将显示警报消息,但不会显示在单元格或行或字段上。 这是处理验证异常的好方法吗? 您能否建议任何处理验证异常的方法?

我们是否应该将验证异常放入 RowPersisting(以避免错误的数据保存)以及 FieldVerifying 中?

【问题讨论】:

    标签: acumatica acumatica-kb


    【解决方案1】:

    您可以使用cache.RaiseExceptionHandling 而不是在 RowPersisting 事件中抛出异常来突出显示带有错误符号的字段。 您还可以通过指定错误级别来控制错误符号出现的位置,如下所示: sender.RaiseExceptionHandling<DAC.field>(e.Row, sender.GetValueExt<DAC.field>(e.Row), new PXSetPropertyException(message, PXErrorLevel.Error));

    PXErrorLevel.Error 会在字段上设置错误符号,PXErrorLevel.RowError 会用错误符号标记网格中的整行。

    根据 UI 要求,您可以将验证保留在 FieldVerifying 上,也可以同时进行 FieldVerifying 和 RowPersisting

    【讨论】:

    • 它工作正常,但是当我在实现修订号逻辑的屏幕中使用异常逻辑时,网格行清除并且数据已保存,并且 UI 中的行/字段中没有显示任何内容(验证检查到RowPersisting 事件)。在 RowPersisting 事件中使用的代码 e.Cancel = true; sender.RaiseExceptionHandling(e.Row, sender.GetValueExt(e.Row), new PXSetPropertyException(message, PXErrorLevel.Error));在该屏幕上显示错误的最佳方式是什么?
    • 那里似乎还有其他问题。您可以在关键字段之一上使用它
    • 不,不是关键字段,同样的事情发生在物料清单中,您也可以查看该表格。请提出解决该问题的建议。
    • 我正在使用新发布的 acumatica 20 版本,在 RowPersisting 事件中,我提出了类似 sender.RaiseExceptionHandling(e.Row, sender.GetValueExt(e.行),新的 PXSetPropertyException(消息,PXErrorLevel.Error));并且还设置 Cancel true,但数据被重置并禁用保存按钮 Evan 引发异常。 19 年没有发生,有什么原因吗?
    • 为了避免在 RowPersisting 上保存数据并通过 NewValue 和 Save 按钮重置值,必须启用直到所有验证通过,我该怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2021-10-15
    • 2011-11-05
    • 1970-01-01
    相关资源
    最近更新 更多