我已经为SOShipmentEntry BLC编写了一个扩展,其中一个FieldVerifying事件链接到Packages网格上的udf。当用户输入值时,它会检查此值是否违反了我们的业务规则。如果是,则触发以下内容。
抛出新的PXSetPropertyException(SWKMapadocMessages.Not_Prepped, PXErrorLevel.RowWarning);
这样可以正常工作,但是如果用户试图保存任何后续更改,则抛出该错误后,会出现错误#29;错误#299:“保存”按钮被禁用"消息,保存被取消。用户必须刷新屏幕才能返回可用状态。有谁知道这是为什么?
答案 0 :(得分:0)
审核自定义后,主要数据视图文档似乎存在问题,用作自定义 MAPADOC <的 DataMember / em> 标签。如T200开发人员培训材料的提供控件数据部分所述,如果数据视图未指定为 PrimaryView <,则只能将相同的数据视图绑定到多个容器控件/ strong>用于数据源控件。我相信,在将 CurrentDocument 定义为 MAPADOC <的 DataMember 后,应该完全解决已停用保存按钮的问题/ em> 标签,而不是主文档数据视图。
<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();
的行为。