У меня есть некоторый код в 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 позаботится об этом. Что мне не хватает?
благодарит за ответ. Как вы думаете, есть ли способ получить эти атрибуты формы изнутри плагина? Попытка сохранить весь код в одном месте. – Wavel
Нет. Вы имеете дело с двумя разными «ярусами». Плагин Retrieve работает на сервере до того, как форма клиента будет даже отображена, поэтому ваш плагин еще не будет иметь представления о форме. Интересной возможностью было бы добавить четвертое поле под названием «FieldsToForceSubmit» или что-то в этом роде. В своем плагине Retrieve установите его в список разделенных запятыми других трех полей. Затем на стороне клиента напишите некоторый общий Javascript, который будет циклически проходить через эти поля и setSubmitMode на них. Таким образом, вам не нужно поддерживать код клиента по крайней мере. –
Наконец-то нашли время, чтобы опробовать ваше решение. Настройка режима отправки указывает форме, что эти поля должны быть сохранены, но ТОЛЬКО, если что-то меняется в форме вручную, чтобы установить флаг IsDirty. Любые идеи по работе над этой проблемой? – Wavel