0

我一直在研究 AX 中高级仓库移动应用程序的一些要求。要求是在扫描项目时做一些事情。因此,为了执行此操作,我在构建项目文本框时设置了 leave 的 registeroverridemethod。构建方法如下:

//This method is updated in WhsWorkExecuteForm
protected void createTextBox(
container _textBox,
boolean   _password = false)
{
FormBuildStringControl      stringControl;

stringControl = controlGroup.addControl(FormControlType::String,this.elementName(_textBox));

if (this.elementHasError(_textBox))
{
    stringControl.colorScheme(FormColorScheme::RGB);
    stringControl.backgroundColor(WHSWorkExecuteForm::errorBackgroundColor());
}

stringControl.text(this.elementData(_textBox));
stringControl.label(this.elementLabel(_textBox));
stringControl.passwordStyle(_password);
stringControl.enabled(this.elementEnabled(_textBox));

//Below code is added to register override method
if(this.elementName(_textBox) == #ItemId)
{
stringControl.registerOverrideMethod(methodStr(FormStringControl,Leave),methodStr(WHSWorkExecuteForm,DynamicButtonControl_modified),this);
}
}

当我从 AX AOT 运行仓库应用程序时调用此方法,即操作菜单项 -> WHSWorkExecute 但它不能从浏览器运行。我也运行了增量 CIL,但没有变化。任何想法?我还需要在 DisplayIEOS.aspx 中进行更改吗?

4

1 回答 1

1

Warehouse Mobile Device Portal 的 Web 浏览器部分由在 AOS 和 IIS 网站之间交换的 xml 文件驱动。您可以在Warehouse Mobile Device Portal Architecture中阅读更多相关信息

Dynamics AX 桌面客户端的 AOT 中的WHSWorkExecute表单基本上是 Web 客户端的快速而肮脏的“模拟器”。它使您能够测试WHSWorkExecute驱动移动设备功能的框架逻辑中的更改,而无需设置启用 Web 客户端的组件。但是在运行时使用FormBuild代码中的类更改此表单对 Web 客户端没有影响,因为这对发送到网站的 xml 数据没有影响。

相反,您应该使用WHSWorkExecute框架提供的方法来添加控件。请参阅使用 Warehouse Mobile Device Portal 创建自定义解决方案,其中有一节介绍buildControl了框架的方法。

如何处理控件的修改事件取决于您想要做什么。第二个链接简要描述了如何实现一些仅限客户端的逻辑。如果您需要在 AOS 上执行逻辑,则必须修改其中一种专用build方法或创建自己的方法。第二个链接对此也有一些指导。为对象注册覆盖方法FormControl将不起作用,因为这也不会更改发送到 Web 客户端的 xml 数据。

于 2021-02-12T18:19:07.673 回答