次の SO の回答に基づいて、動的に塗りつぶされた 3 つの FlyoutAnchor リボン ボタンを作成しようとしています:ドロップダウン メニューを CRM 2011 リボンに追加します。
3 つの 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
。以下にリストされている他の 3 つの予想されるプロパティもundefined
次のとおりです。
- SourceControlId : イベントを開始したリボン コントロールの Id 値。
- CommandValueId : ボタンがクリックされたときにコマンド イベントと共に送信される文字列。
- MenuItemId : コントロールからメニュー項目の Id への参照。
PrimaryEntityTypeNameなどの 2 番目の異なる CrmParameter を渡すと、この引数は正しく入力/設定されます。
めちゃめちゃなCommandProperties
議論の原因は何でしょうか?
2012 年 2 月 21 日更新 : 完全を期すために、「 CRM 2011 リボンにドロップダウン メニューを追加する」で説明されているような単一ボタンのアプローチも試しましたが、同じ結果が得られました (使用可能な Commandproperties オブジェクトはありません)。私の CRM サーバーは Rollup 6 を実行していますが、それが何か関係しているのでしょうか? この種のフライアウト リボン メニューを取得する別の方法はありますか? たぶん、純粋な JavaScript で何か?Outlook CRM Client でも動作するはずです...