在移动应用页面上,我有一个简单的文本字段来表示位置。该字段下面是一个按钮。按下按钮后,它将导航到一个新的容器,并且该文本框中的值应该被复制到容器中的另一个文本框中。如果我在文本框中输入一个值,请在字段外单击,然后按一下按钮,更改将提交到缓存中,并且我可以在代码中访问新值。但是,如果我在文本框中输入一个值,然后在不单击文本框的情况下按下按钮,则更改不会提交到缓存中,因此无法访问新值。
奇怪的是,如果我模仿Web浏览器中的这些步骤,无论如何,更改总是提交给缓存。
我将按钮和网页上的字段的“ CommitChanges”属性设置为True,但这在移动应用程序页面中是不可能的。
在执行操作时,是否可以强制页面提交对此字段的更改?我尝试刷新视图并引发字段更新事件,但均无济于事。
这是在我的msd文件中声明我的操作的方式。
add recordAction "RedirectLocationMobileFrom"{
behavior = Record
Redirect = True
RedirectToContainer = "CreateNewAddress"
DisplayName = "Create Location from this address"
}
答案 0 :(得分:0)
如果我在文本框中输入一个值,请在字段外单击,然后单击“确定”。 按下按钮,将更改提交到缓存,我可以 在我的代码中访问新值。但是,如果我在 文本框,然后在不单击文本框的情况下按下按钮, 更改未提交到缓存,所以我无法访问新的 值。
这是由UI事件处理程序引起的错误的描述。我也在桌面浏览器网站中注意到了它。操作可以通过在执行操作之前显式调用Save来解决。不幸的是,我不知道针对移动设备的解决方法,请考虑填写错误报告。
正确的解决方法是更好地处理焦点事件。任何时候都只关注一个UI元素。当您将焦点放在另一个元素上时,当前焦点所在的对象会收到丢失焦点事件。这是触发CommitChanges的事件。我怀疑这个错误是单击按钮不会将焦点从文本框中移开,因此永远不会调用丢失焦点的事件并阻止CommmitChanges。