2

次の 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 でも動作するはずです...

4

1 に答える 1

1

私は同じ問題に直面していました。解決策は、'<Menu Id=\"Sample.DynamicMenu\">' を使用する代わりに、'<Menu Id="Sample.DynamicMenu">' を使用することです。違いは、エスケープ文字を使用しないことです。 "

于 2012-02-23T11:47:28.507 に答える