CRM 2011 でリボン ボタンを動的に作成する方法を教えてください。シナリオは、レコードを作成するときに、そのレコードで選択されたオプションセットの値に基づいて 1 つのリボン ボタンを動的に作成する必要があるというものです。JScript、プラグイン、またはワークフローを使用して機能させることはできますか? ここでは、有効化ルールまたは表示ルールは役に立たず、XML コードに触れるべきではありません。
4 に答える
簡単な原則: リボン ボタンはレコードの一部ではなく、UI の一部です。探しているレコードに基づいて UI を変更できます。したがって、レコードにボタンを「追加」することはできません。エンティティ フォームにボタンを追加できます。
プラグインはここでは絶対に機能しません。「バックエンド」でロジックを実行します。JavaScript は機能するかもしれませんが、これは非常に扱いにくいと思います。リボン Xml を編集する必要があります。現在、リボンを編集するための優れた機能があります:リボン ワークベンチ。このツールを使用すると、リボンの編集が大幅に簡単になります (これは XML の編集ですが、これが意図された方法です)。
それから私はあなたがする必要があると思います
- アクションごとにリボン ボタンを作成します。
- 次に、このチュートリアルに従って、それらを有効または無効にします:フォームの値に基づいてリボン ボタンを動的に有効/無効にします。
これを行うには、表示ルールを使用するのが正しい方法です。
複数のボタンを作成し、選択したオプションがボタンの名前と等しい場合の表示ルールを設定します。
2つの方法でそれを行うことができます-
プラグイン経由: (注: サンドボックス モードでは機能せず、時間がかかります。)
1 つのソリューションを作成し、指定されたエンティティをそれに追加します。ソースコード はこちら
このソリューションをTempフォルダーにエクスポートし、解凍します。
customizations.xml ファイルを編集して、独自の RibbondiffXml タグを追加します。
すべての XML ファイルを圧縮し、CRM にインポートします。
カスタマイズを公開します。
XML 編集を介して:
- アプリケーション リボンをエクスポートし、XML を更新してボタンを追加し、すべての場所でエンティティ名を {!EntityLogicalName} に置き換えます。例:
<CustomAction Id="New.{!EntityLogicalName}.MyButton.CustomAction" Location="Mscrm.HomepageGrid.{!EntityLogicalName}.MainTab.Management.Controls._children" Sequence="70">
... EnableRule を追加して、現在のエンティティに構成レコードが存在する場合にのみこのボタンを有効にします。
<EnableRule Id="New.{!EntityLogicalName}.MyButton.Check"> <CustomRule FunctionName="checkConfigRecord" Library="$webresource:new_/Scripts/ValidateConfigRecords.js"> <CrmParameter Value="SelectedEntityTypeName" /> </CustomRule> </EnableRule>
特定のエンティティに存在する構成レコードをカウントする関数checkConfigRecordを含む、 new_/Scripts/ValidateConfigRecords.jsという名前の JavaScript ライブラリを 1 つ作成します。count が 1 より大きい場合はtrueを返します。それ以外の場合はfalse。
- ApplicationRibbon Zip ファイルをインポートする