我在PostAccountRetrieve中有一些代码(我删除了行):
Entity entity = (Entity)localContext.PluginExecutionContext.OutputParameters["BusinessEntity"];
Account account = entity.ToEntity();
...
account.test_TerminationDate = DateTime.SpecifyKind((DateTime)subscriber.TerminationDate, DateTimeKind.Local);
account.test_MaxPositions = subscriber.MaxLivePos;
account.test_Locked = subscriber.Locked;
entity.EntityState = Microsoft.Xrm.Sdk.EntityState.Changed;
...
表单上的字段由代码填写,但是,当用户按下“保存”时,它不会使用该帐户保存这些值。我认为设置EntityState会处理这个问题。我错过了什么?
答案 0 :(得分:0)
我认为EntityState不会在Post Retrieve插件中为您提供帮助。我非常确定您的问题是CRM表单足够智能,只能提交实际更改的值。您正在“更改”Post Retrieve中的这些值,这会在表单加载时发生,因此表单不会认为这些值已更改,并且在您单击“保存”时不会提交它们。
解决方案是在表单load:
中使用此javascriptXrm.Page.getAttribute(“test_TerminationDate”).setSubmitMode(“always”);
Xrm.Page.getAttribute(“test_MaxPositions”).setSubmitMode(“always”);
Xrm.Page.getAttribute(“test_Locked”).setSubmitMode(“always”);
这应该绕过CRM的“智能”,因此这些字段总是在保存时提交。