Dynamics crm 2011 CRM 2011:表单保存时,在PostRetrieve期间更新的字段未保存

Dynamics crm 2011 CRM 2011:表单保存时,在PostRetrieve期间更新的字段未保存,dynamics-crm-2011,Dynamics Crm 2011,我在PostAccountRetrieve中有一些代码(我删除了行): 表单上的字段由代码填写,但是,当用户按“保存”时,它不会将这些值与帐户一起保存。我想设置EntityState可以解决这个问题。我遗漏了什么?我不认为EntityState会在后期检索插件中帮助您。我敢肯定,您的问题在于CRM表单足够智能,只提交实际更改的值。您正在Post REQUERATE中“更改”这些值,这是在加载表单时发生的,因此表单认为这些值没有更改,并且在单击“保存”时不会提交这些值 解决方案是在表单加载中使用此

我在PostAccountRetrieve中有一些代码(我删除了行):


表单上的字段由代码填写,但是,当用户按“保存”时,它不会将这些值与帐户一起保存。我想设置EntityState可以解决这个问题。我遗漏了什么?

我不认为EntityState会在后期检索插件中帮助您。我敢肯定,您的问题在于CRM表单足够智能,只提交实际更改的值。您正在Post REQUERATE中“更改”这些值,这是在加载表单时发生的,因此表单认为这些值没有更改,并且在单击“保存”时不会提交这些值

解决方案是在表单加载中使用此javascript:

Xrm.Page.getAttribute(“test_TerminationDate”).setSubmitMode(“always”);
Xrm.Page.getAttribute(“test_MaxPositions”).setSubmitMode(“always”);
Xrm.Page.getAttribute(“test_Locked”).setSubmitMode(“always”);

这应该绕过CRM的“smarts”,以便在保存时始终提交这些字段。

谢谢您的回答。你认为有没有办法从插件中获取这些表单属性?尝试将所有代码保存在一个位置。不-您处理的是两个不同的“层”。在客户端表单呈现之前,您的检索插件正在服务器上运行,因此您的插件还没有表单的概念。一个有趣的可能性是添加第四个字段“FieldsToForceSubmit”或类似的内容。在检索插件中,将其设置为其他3个字段的逗号分隔列表。然后在客户端,编写一些通用Javascript,循环遍历这些字段并在其上设置SubmitMode。这样,您至少不必维护客户端代码。终于有时间尝试您的解决方案了。设置提交模式会告诉表单需要保存这些字段,但仅当表单上的某些内容手动更改以便设置IsDirty标志时。有没有解决这个问题的想法?也许可以在OnLoad事件中添加一些javascript,只将其中一个字段设置为null,然后返回到正确的值?这将触发IsDirty逻辑。您甚至可以将字段设置为自身,但CRM可能比这更聪明。:)
Xrm.Page.getAttribute(“test_TerminationDate”).setSubmitMode(“always”);
Xrm.Page.getAttribute(“test_MaxPositions”).setSubmitMode(“always”);
Xrm.Page.getAttribute(“test_Locked”).setSubmitMode(“always”);