2

Я пытаюсь создать три динамически заполненные кнопки FlyoutAnchor ленты, на основе следующего SO ответа: Add Dropdown Menu to CRM 2011 ribbonDynamics CRM 2011: CommandProperties CrmParameter не установлен правильно, когда передаются функции FlyoutAnchor JavaScript

Все три кнопки FlyoutAnchor использовать те же PopulateQueryCommand. Функция JavaScript, связанная с командой (см. Блок кода ниже), получает команду CommandProperties. CrmParameter передан в качестве первого аргумента, чтобы иметь возможность идентифицировать кнопку вылета, которая была нажата (и должна быть заполнена динамически добавленными пунктами меню).

function DynamicMenu(CommandProperties) { 
    /// <summary>Dynamically generate menu items based on context</summary> 
    /// <param name="CommandProperties"> 
    /// Command properties crm parameter sent from the ribbon. object used to inject the Menu XML 
    /// </param> 

    debugger; 

    var menuXml = '<Menu Id=\"Sample.DynamicMenu\">' + 
         // ... Other menu XML stuff goes here 
        '</Menu>'; 

    CommandProperties.PopulationXML = menuXml; // error here...PopulationXML is undefined... :-(

    // ... 
} 

Функция получает красиво называется и передается аргумент «CommandProperties» (это не null и не undefined), но когда я пытаюсь установить PopulationXML я получаю сообщение об ошибке, потому что это свойство undefined. Остальные три ожидаемые свойства, перечисленные ниже, также undefined:

  • SourceControlId: Значение Id элемента управления ленты, которая инициировала событие.
  • CommandValueId: Строка, которая отправляется с событием команды при нажатии кнопки.
  • MenuItemId: Ссылка от элемента управления на идентификатор элемента меню.

Когда я пройти во второй другой CrmParameter, например PrimaryEntityTypeName, этот аргумент правильно заполнен/набор.

Что может быть причиной перепутанного аргумента CommandProperties?

Update 21-2-2012: Для того, чтобы быть полным, я также попробовал одной пуговицей подход, например, как описано в Add Dropdown Menu to CRM 2011 ribbon, но это дало мне тот же результат (Объект не пригоден для использования Commandproperties). Мой CRM-сервер работает с Rollup 6, может быть, что-то с этим связано? Есть ли другой способ получить такое меню всплывающих лент? Может быть, что-то в чистом JavaScript? Она также должна работать в клиенте Перспективы CRM ...

ответ

1

Я столкнулся с аналогичной проблемой, разрешение вместо использования «< меню Id = \„\“Sample.DynamicMenu >», используйте '< меню Id = "Sample.DynamicMenu" > ' Разница заключается в том, чтобы не использовать escape-символ для "

+0

Удаление escape-символов, сработанных для создания элемента подменю, что действительно здорово !!, но я до сих пор не могу получить свойства например «CommandProperties.SourceControlId», поэтому я не могу различать разные нажатые кнопки. В качестве обходного пути мне пришлось бы добавлять разные CommandDefinitions для каждой кнопки FlyoutAnchor. Вы также знаете, как получить эти свойства? –

+0

Спасибо, что нашли время ответить на мой вопрос! –

+0

Я знаю, что это поздний ответ, и, вероятно, он уже понял. Вы можете установить идентификатор для кнопок, а затем проверить идентификаторы – Florian