我有几个自定义实体,它们通过多对多关系链接在一起,使用包含一些链接属性的链接实体。为了清楚起见,我们称这些超级英雄和超级恶棍,链接将是战斗。
(Superhero) 1 --------- * (Fight) * -------- 1 (Supervillain)
也就是说,每场战斗都是在 1 个超级英雄和 1 个超级恶棍之间进行,每个超级英雄/超级恶棍组合可以进行任意数量的战斗,可能是不同类型的 - 剑、拳头等。
到目前为止所有简单的东西。实际上,我在这里所做的是复制新的“连接”功能,但使用仅适用于超级英雄和超级恶棍的自定义链接类型。这样做的原因是我想将它们显示为表单左侧的单独导航项,而不是将它们全部放在“连接”下。
现在,从超级英雄表格中,当我查看左侧窗格中的相关实体时,我想显示一个战斗列表,以及超级英雄正在战斗的超级反派。很简单,我可以自定义“战斗关联视图”来显示战斗类型和 Supervillain 实体。这让我可以直接点击从超级英雄到他正在战斗的超级反派。
但是如果我想从 Supervillain 做同样的事情呢?Supervillains 也显示相同的“战斗关联视图”,但需要自定义以显示战斗类型和相关的超级英雄......但是,我不想要“一刀切”的关联视图,两者都有超级英雄和超级恶棍领域。
我希望相关视图根据我是在看超级英雄还是超级恶棍而改变。所以我创建了两个新视图,每个视图都有所需的列。我现在可以在每个实体中选择相关列表时手动切换到这些视图。这很好用,但我不希望每次查看相关战斗时都执行此手动步骤。
所以,最后我要解决问题:如何根据实体类型自动(即通过脚本,如有必要)选择默认的“关联”视图,该视图将为与超级英雄和超级恶棍相关的战斗显示?
使用表单脚本,我可以很容易地获得导航项,但之后我迷路了:
function SuperHero_OnLoad()
{
var fightItem = Xrm.Page.ui.navigation.items.get("nav_new_fight");
// What next?!
fightItem.MagicFunctionThatSelectsADefaultViewOrHacksIntoTheIframeParametersOrSomething();
}
注意:我知道我可以在主编辑表单中使用子网格,它可以让您选择要显示的视图,但我不想用更多的子网格阻塞表单。我想使用表单左侧的相关树。