2011-12-23 75 views
2

我正在定制我们的CRM解决方案,但今天我遇到了一个问题。我有一个由OnSave事件触发的JavaScript。此JavaScript更新表单中的字段,并尝试再次保存。保存由OnSave事件触发的现场更新

脚本执行时,我可以看到我试图更新更改的字段,但是当表单重新加载时,该字段仍然具有其旧值。下面我已经提供了一些sudo代码。有其他人有过这个问题吗?

的OnSave

//Update field 
Xrm.Page.getAttribute("fieldname").setValue(value); 
//Set submit mode to always 
Xrm.Page.getAttribute.setSubmitMode("always"); 
//Force save 
Xrm.Page.data.entity.save(); 

回答

4

如果您发布的代码有没有复制/粘贴错误,我觉得这条线会导致您的问题

Xrm.Page.getAttribute.setSubmitMode("always"); 

这应该是

Xrm.Page.getAttribute("fieldname").setSubmitMode("always"); 
+1

感谢您的回复@ckeller。我做了这个改变,但我仍然有同样的问题。我相信我会遇到某种竞争状态。如果我使用运行onsave的非常短的脚本,则任何更新的字段都将保存并正确显示在PostRetrieve中。但是当我使用这个更复杂的脚本查询一些其他实体(因此需要更长的时间)时,PostRetrieve中没有更新。 – 2012-01-11 20:08:51

+0

我真的想出了如何解决这个问题。通过阻止保存事件,然后检查更新的字段是否脏,我可以在更新值后强制保存。 – 2012-01-11 20:50:46

+0

自己遇到过这个问题,我相信这是由于Async JS发生的?有没有人知道处理这个问题的更好方法?似乎愚蠢的是必须防止保存,然后重新调用保存在回调,特别是如果它只做一些简单的更新。 – Ant 2014-10-01 16:05:49

1

我的回答是没有答案更多的呼救帮助它自我。抱歉。

正如我所说我会检查设置de submitmode和更改值的顺序。看起来你必须首先设置submitmode,然后分配一个值。

现在我的更改已保存。

相关问题