【问题标题】:How to Populate Subgrid2 based on the selected record from Subgrid1?如何根据从 Subgrid1 中选择的记录填充 Subgrid2?
【发布时间】:2025-12-09 10:20:06
【问题描述】:

Entity1 和 Entity2 具有 N:N 关系
Entity2 & Entity3 有 N:N 关系

Entity1 窗体上有两个子网格

Subgrid1 - 用于 Entity2 记录
Subgrid2 - 用于 Entity3 记录

如果我从 Subgrid1 添加/选择(使用加号 +)Entity2 记录,则所有与 Entity3 相关的记录都应加载到 Subgrid2。

我已阅读有关 Associate 并使用插件来解决此问题的信息,但我只能获得 Entity1 和 Entity2 之间的关系。

【问题讨论】:

  • 我正在考虑使用 fetchxml 来填充第二个子网格。您能否在网上为我指出一个关于如何实现这一点的好例子?我一直在网上搜索,我能找到的只有 javacript 代码。我正在尝试使用 C# 插件实现解决方案。

标签: plugins dynamics-crm crm associate


【解决方案1】:

假设 Entity1 为 Student,Entity2 为 Subject,Entity3 为 Exam。

(A) N 个学生可以报读 N 个科目
(B) N 个科目可以有 N 个考试
(C) N 个学生会写 N 个考试

(D) 除此之外,Entity2 和 Entity3 之间应该有 1:N 的关系。即配置所有相关的科目考试。

在学生和考试之间创建第三个 N:N 关系。即Entity1 和Entity3。我会创建手动 N:N 关系而不是原生 N:N。

在 Entity2 与 Entity1 的关联上注册一个插件,实现为 Entity2 [从 (D)] 检索所有 Entity3 记录并关联到 Entity1 的逻辑。

在表单中使用关系 (A) 和 (C) 的子网格。

编辑:

Read this 构建 fetchxml 查询,对其进行格式化并执行以获取 EntityCollection

service.RetrieveMultiple(new FetchExpression(fetchXmlString));

【讨论】: