在PXSetPropertyException之后,在“保存按钮禁用”状态下保留屏幕

问题描述 投票:0回答:1

我已经为SOShipmentEntry BLC编写了一个扩展,其中一个FieldVerifying事件链接到Packages网格上的udf。当用户输入值时,它会检查此值是否违反了我们的业务规则。如果是,则触发以下操作。

抛出新的PXSetPropertyException(SWKMapadocMessages.Not_Prepped,PXErrorLevel.RowWarning);

这工作正常,但是如果用户尝试保存任何后续更改后抛出该错误,则会出现“错误#299:禁用保存按钮”消息并取消保存。用户必须刷新屏幕才能返回可用状态。有谁知道这是为什么?

acumatica
1个回答
0
投票

在查看自定义后,主数据视图文档似乎存在问题,该文档用作自定义MAPADOC选项卡的DataMember。如“为T200开发人员培训材料提供控件数据”一节中所述,如果未将数据视图指定为数据源控件的PrimaryView,则只能将相同的数据视图绑定到多个容器控件。我相信,在将CurrentDocument定义为MAPADOC选项卡的DataMember而不是主Document数据视图后,应该完全解决禁用Save按钮的问题。

<px:PXTabItem Text="MAPADOC">
    <Template>
        <px:PXFormView runat="server" ID="CstFormView10" DataMember="CurrentDocument" 
            SkinID="" Width="100%">
            <Template>
                ...
            </Template>
        </px:PXFormView>
    </Template>
</px:PXTabItem>

除此之外,我还注意到在FieldVerifying事件处理程序中调用的Actions.PressSave();方法。说实话,事件处理程序永远不是保存对数据库的更改的好地方。一个动作委托是一个完美的地方,但在一个事件处理程序中,一个人实际上应该永远不会尝试调用Actions.PressSave();方法,因为在那一刻并非DAC中的所有更改都已到达相应的PXCache并且可能因为执行Actions.PressSave();而丢失被召唤。

© www.soinside.com 2019 - 2024. All rights reserved.