Как асинхронно показать кнопку "Создать новую" во вспомогательной сетке CRM?
Мне нужно скрыть кнопку "Добавить новый" в подсетке, пока не будут выполнены определенные критерии. призвание Xrm.Page.ui.refreshRibbon
вызовет мою функцию JS, определенную в моем правиле включения, но я не могу получить +
кнопка, чтобы показать.
Это не поддерживается, или есть какая-то методология, чтобы заставить это работать?
2 ответа
Арун Винот действительно нашел отличную статью, чтобы описать проблему, но на самом деле я обнаружил, что все, что на самом деле требовалось, это вызывать обновление для самой сетки.
Важно отметить, что это не перезапускает правила включения, просто показывает кнопку, если состояние изменилось.
Похоже, вы должны сделать несколько дополнительных трюков.
Обновление панели команд подсетки
Вы обнаружите, что при загрузке формы, если в атрибуте, на который вы ссылаетесь в правиле включения, есть значение, кнопка "Добавить новый" будет видна. Однако, если значение изменяется, панель команд подсети автоматически не обновляется, чтобы отразить новое состояние. При добавлении или удалении строк во вспомогательной сетке панель команд обновляется, но в этом случае это не очень полезно.
Панель команд основной формы может быть обновлена с помощью
Xrm.Page.ui.refreshRibbon()
однако это не обновит панели команд подсети. Вместо этого мы можем добавить событие onchange к полям, которые используются в нашем VaueRule, и вызвать:
Xrm.Page.data.save();
Это обновит подсетки и переоценит любой из EnableRules, однако также сохранит все другие грязные атрибуты, поэтому их следует использовать с осторожностью, если у вас не включено автосохранение.