Как скрыть ванильную кнопку в соответствии с состоянием формы

Я пытаюсь скрыть кнопку СОХРАНИТЬ vanilla в соответствии с состоянием формы. когда состояние формы! = создать, ванильная кнопка не должна отображаться. Я пробовал разные вещи, но ничего не работает:

  1. Я создаю функцию в js, которая возвращает истину, если форма создает состояние

    function isHideState(){
    formstate = Xrm.Page.ui.getFormType();
    if(formstate == formType.create){
    return true;}
    else{
    return false;}
    }
    
  2. Я добавил правило отображения и подключил его к своей команде, относящейся к функции js: мое правило: FormStateRule и состояние: Create

  3. Я подключил свою команду к своей ванильной кнопке, но она отображается, даже если форма не находится в состоянии создания.

Я что-то упускаю? прошло несколько часов .. руководство кто-нибудь?

ОБНОВЛЕНИЕ: чтобы быть более конкретным - мне нужно, чтобы кнопка была видна только в режиме создания.


person Damkulul    schedule 07.01.2018    source источник
comment
Скрытие кнопки не помешает другим способам сохранения записи (например, кнопка сохранения в строке состояния или ctrl + s)   -  person jasonscript    schedule 08.01.2018


Ответы (3)


Примечание: всякий раз, когда вы настраиваете обычную кнопку (кнопка OOB Save в вашем случае), убедитесь, что вы начали, щелкнув правой кнопкой мыши кнопку в рабочей среде ленты и выбрав кнопку / команду настройки. чтобы «сохранить» поведение OOB и добавить свои настройки поверх него.

Измените эту строку

if(formstate = formType.create){

в

if(formstate == formType.create){

Single = для присвоения; double = для сравнения.

Обновление:

RibbonDiffXml следует / ожидает эту структуру в команде:

<CommandDefinition
Id="String">
 <EnableRules />
 <DisplayRules />
 <Actions />
</CommandDefinition>

Нет прямого свойства для правил в Button; может быть связана только команда.

<Button Alt="String"
  Command="String"
  CommandType=["General" | "OptionSelection" | "IgnoredByMenu" ]
  CommandValueId="String"
  Description="String"
  Id="String"
  Image16by16="String"
  Image16by16Class="String"
  Image16by16Left="Non Positive Integer"
  Image16by16Top="Non Positive Integer"
  Image32by32="String"
  Image32by32Class="String"
  Image32by32Left="String"
  Image32by32Top="String"
  LabelCss="String"
  LabelText="String"
  MenuItemId="String"
  ModernCommandType=[ "ControlCommand"| "System"]
  ModernImage=”String”
  Sequence="1"
  TemplateAlias="String"
  ToolTipDescription="String"
  ToolTipHelpKeyWord="String"
  ToolTipImage32by32="String"
  ToolTipImage32by32Class="String"
  ToolTipImage32by32Left="Non Positive Integer"
  ToolTipImage32by32Top="Non Positive Integer"
  ToolTipShortcutKey="String"
  ToolTipTitle="String"
/>

После 2013 года введение в панель команд изменило поведение правила включения, аналогичного правилу отображения. Отключенные кнопки с использованием правила Enable скроют кнопку, чтобы использовать пространство для других кнопок на панели команд (поскольку всегда есть ограничение, например, 7 или 9 кнопок на панели команд, в отличие от ленты).

Повторное включение кнопок будет действовать как отображение / скрытие после переключения (аналогично правилу отображения). Вероятно, вы сможете следить за этим сообщение в блоге для достижения ваших целей.

Важно помнить, что необходимо добавить в команду правила включения. Обычно это пропускают, кто-то создает правило включения, но забывает добавить его в команду кнопки.

Если вы забыли добавить в команду правила включения, кнопка будет отображаться во всех состояниях / этапах формы. Если вы забудете добавить команду к кнопке, она не будет отображаться в форме.

person Arun Vinoth    schedule 08.01.2018
comment
это было == (я обновил свой вопрос). По-прежнему отображается моя кнопка, следует ли мне перейти к настройке и не использовать эти правила для обычных кнопок? - person Damkulul; 08.01.2018
comment
@Damkulul, вы щелкнули правой кнопкой мыши на рабочем столе ленты и нажали кнопку / команду настройки, прежде чем выполнять настройку в ванильной кнопке? - person Arun Vinoth; 08.01.2018
comment
Боже мой, чего не хватало! и для создания связи между моим правилом отображения и моей кнопкой должен ли я создать конкретную команду и подключить ее к функции js? или есть способ подключить правило отображения напрямую к кнопке сохранения? - person Damkulul; 08.01.2018
comment
спасибо, Арун, ваш ответ точен, моя проблема не знала о команде настройки ванильной кнопки, которая была недостающей частью. - person Damkulul; 09.01.2018

Здесь нам не нужно использовать JavaScript, вместо правила отображения используйте правило Enable / Disable и применяйте правило FormState. См. Изображение ниже  введите описание изображения здесь

person Munavvar Husein    schedule 08.01.2018
comment
Вы можете попробовать привязать свой код к EnableRule вместо правила отображения. - person Munavvar Husein; 08.01.2018

В редакторе ленты вы можете добавить правила отображения и включения. Вы можете проверить тип формы без кода. Посмотрите это видео:

https://www.youtube.com/watch?v=xyLzEAW0CJs

person Nick    schedule 25.07.2018