2011-08-31 1 views
0

У меня есть некоторый код в PostAccountRetrieve (я удалил строки):CRM 2011: Поля обновлены в PostRetrieve не сохраняется, когда форма сохраняется


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

Я не думаю, что 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-так что эти поля всегда получить представленный на Save.

+0

благодарит за ответ. Как вы думаете, есть ли способ получить эти атрибуты формы изнутри плагина? Попытка сохранить весь код в одном месте. – Wavel

+0

Нет. Вы имеете дело с двумя разными «ярусами». Плагин Retrieve работает на сервере до того, как форма клиента будет даже отображена, поэтому ваш плагин еще не будет иметь представления о форме. Интересной возможностью было бы добавить четвертое поле под названием «FieldsToForceSubmit» или что-то в этом роде. В своем плагине Retrieve установите его в список разделенных запятыми других трех полей. Затем на стороне клиента напишите некоторый общий Javascript, который будет циклически проходить через эти поля и setSubmitMode на них. Таким образом, вам не нужно поддерживать код клиента по крайней мере. –

+0

Наконец-то нашли время, чтобы опробовать ваше решение. Настройка режима отправки указывает форме, что эти поля должны быть сохранены, но ТОЛЬКО, если что-то меняется в форме вручную, чтобы установить флаг IsDirty. Любые идеи по работе над этой проблемой? – Wavel

 Смежные вопросы

  • Нет связанных вопросов^_^