CRM 2011: поля, обновленные во время PostRetrieve, не сохраняются при сохранении формы - PullRequest
0 голосов
/ 31 августа 2011

У меня есть код в 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 позаботится об этом. Чего мне не хватает?

1 Ответ

0 голосов
/ 01 сентября 2011

Я не думаю, что EntityState поможет вам в плагине Post Retrieve.Я уверен, что ваша проблема в том, что форма CRM достаточно умна, чтобы отправлять только те значения, которые действительно были изменены.Вы «меняете» эти значения в Post Retrieve, что происходит при загрузке формы, поэтому форма не думает, что эти значения изменились, и не отправляет их при нажатии кнопки «Сохранить».

Решение состоит в том, чтобыиспользуйте этот javascript в форме загрузки:

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

Это должно игнорировать "умные способности" CRM, поэтому эти поля всегда отправляются при сохранении.

...