いくつかのリンク属性を含むリンク エンティティを使用して、多対多の関係でリンクされているカスタム エンティティがいくつかあります。わかりやすくするために、これらをスーパーヒーローとスーパーヴィランと呼びましょう。リンクはファイトになります。
(Superhero) 1 --------- * (Fight) * -------- 1 (Supervillain)
つまり、各戦闘は 1 人のスーパーヒーローと 1 人のスーパーヴィランの間で行われ、各スーパーヒーロー/スーパーヴィランのコンボは、剣や拳など、さまざまなタイプの戦闘をいくつでも持つことができます。
これまでのすべての単純なもの。事実上、ここで行っているのは、新しい「接続」機能を再現することですが、スーパーヒーローとスーパーヴィランでのみ機能するカスタム リンク タイプを使用しています。この理由は、これらを「接続」の下にまとめるのではなく、フォームの左側に個別のナビゲーション項目として表示したいからです。
さて、スーパーヒーロー フォームから、左側のペインで関連するエンティティを見ると、スーパーヒーローが戦っていたスーパーヴィランと共に、戦いのリストを表示したいと思います。簡単なことですが、「ファイト関連ビュー」をカスタマイズして、ファイトのタイプとスーパーヴィラン エンティティを表示するだけです。これにより、スーパーヒーローから彼が戦っていたスーパーヴィランまで直接クリックできます。
しかし、スーパーヴィランから同じことをしたい場合はどうですか? スーパーヴィランについても同じ「ファイト関連ビュー」が表示されますが、ファイト タイプと関連するスーパーヒーローを表示するにはカスタマイズする必要があります...スーパーヒーローとスーパーヴィランのフィールド。
スーパーヒーローとスーパーヴィランのどちらを見ているかに応じて、関連付けられたビューを変更したいと考えています。そこで、それぞれに必要な列を含む 2 つの新しいビューを作成します。各エンティティで関連リストを選択するときに、これらのビューに手動で切り替えることができるようになりました。これは問題なく機能しますが、関連する戦いを見るたびに手動でこの手順を実行する必要はありません。
それで、最後に質問のポイントに行き着きます: エンティティの種類に応じて、スーパーヒーローとスーパーヴィランに関連する戦いに表示されるデフォルトの「関連付けられた」ビューを自動的に (つまり、必要に応じてスクリプトを介して) 選択するにはどうすればよいですか?
フォーム スクリプトを使用すると、ナビゲーション アイテムを簡単に取得できますが、その後は道に迷ってしまいます。
function SuperHero_OnLoad()
{
var fightItem = Xrm.Page.ui.navigation.items.get("nav_new_fight");
// What next?!
fightItem.MagicFunctionThatSelectsADefaultViewOrHacksIntoTheIframeParametersOrSomething();
}
注:メインの編集フォームでサブグリッドを使用して、表示するビューを選択できることはわかっていますが、サブグリッドを増やしてフォームを詰まらせたくありません。フォームの左側にある関連ツリーを使用したいと考えています。