【发布时间】:2020-02-07 17:45:27
【问题描述】:
我复制了一个事件(点击)并尝试验证交付模式,但原始代码在验证之前执行。 (即使我激活了断点!)
有人知道为什么吗?
class tt042WHSShipmentDetailsForm_Events
{
[FormControlEventHandler(formControlStr(WHSShipmentDetails, btnOutboundShipConfirm), FormControlEventType::Clicked)]
public static void btnOutboundShipConfirm_OnClicked(FormControl sender, FormControlEventArgs e)
{
Dialog dialog = new Dialog();
WHSShipmentTable shipmentTable;
FormDataSource dataSource = sender.formRun().dataSource(formDataSourceStr (WHSShipmentDetails, WHSShipmentTable));
shipmentTable = dataSource.cursor() as WHSShipmentTable;
dialog.addText("@tt_042:ScanDlvMode");
sender.enabled(false);
DialogField validationField= dialog.addFieldValue(extendedTypeStr (RetailDeliveryModeID), "" ,"@tt_042:DeliveryField");
if (dialog.run())
{
if (dialog.closedOk())
{
RetailDeliveryModeID validate=validationField.value();
if (SalesTable::find(shipmentTable.OrderNum).DlvMode!=validate)
{
throw Global::error("@tt_042:ScanError");
}
}
}
}
}
【问题讨论】:
-
您可能需要使用命令链 (CoC),请参阅 Class extension - Method wrapping and Chain of Command - Controls。
-
虽然这不是扩展,但 CoC 是否适用?
-
我建议使用 CoC 而不是事件处理程序。
标签: validation axapta x++ eventhandler dynamics-365-operations