我已经创建了一个实体,并且我想要一个在创建表单中显示所有实体的选项,我该怎么做? 类似于流程形式中的选项集:
最佳答案
这里有一些用于检索所有实体的 JavaScript 代码
以下是有关代码的一些要点
- 使用下划线 (
_
),它在顶部
框架上可用,但在其他上下文中可能不可用 - 仅选择 (
$select
)EntityTypeCode
和DisplayName
属性 - 应用一系列过滤器来尝试减少结果数量。过滤器包括以下内容
- 不得是业务流程实体
- 不能是 Intersect 实体(即 N:N 关系中的联接表)
- 不得是一项事件
- 不得是 ActivityParty
- 必须在高级查找中可用
- 必须能够触发工作流程
代码:
var underscore = top["_"];
var entityMetadata = (function(_) {
return { retrieve: queryMetadata };
function buildEntityList(data)
{
var entities = _.chain(data.entities)
.map(function(entity) {
return {
"Name": entity.DisplayName.UserLocalizedLabel.Label,
"ETC": entity.ObjectTypeCode
};
})
.sortBy("Name")
.value();
return entities;
}
function queryMetadata()
{
var select = "$select=DisplayName,ObjectTypeCode";
var filter = "$filter="
filter += "IsBPFEntity eq false";
filter += " and IsIntersect eq false";
filter += " and IsActivity eq false";
filter += " and IsActivityParty eq false";
filter += " and CanTriggerWorkflow eq true";
filter += " and IsValidForAdvancedFind eq true";
var p = Xrm.WebApi.retrieveMultipleRecords("EntityDefinitions", "?" + select + "&" + filter).then(buildEntityList);
return p;
}
})(underscore);
此代码返回一个 promise
,其中所有实体都符合上述条件。以下是如何调用它,并将结果写入浏览器控制台:
entityMetadata.retrieve().then(console.log);
这会将所有显示名称和实体类型代码输出到控制台,如下所示:
StackOverflow 上的其他答案展示了如何使用 options
构建 select
控件,因此我不会在此处包含该内容。
关于dynamics-crm - Crm 2016 创建选项集表示所有实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51491115/