Dynamics crm MSCRM,检索实体表单列表
我需要一个给定实体(多种形式)的所有表格列表;我知道客户端Javascript代码中有一个解决方案,但我使用的是服务器端代码 我尝试使用此消息获取实体元数据,但在那里找不到:Dynamics crm MSCRM,检索实体表单列表,dynamics-crm,Dynamics Crm,我需要一个给定实体(多种形式)的所有表格列表;我知道客户端Javascript代码中有一个解决方案,但我使用的是服务器端代码 我尝试使用此消息获取实体元数据,但在那里找不到: RetrieveEntityRequest mdRequest = new RetrieveEntityRequest() { EntityFilters = EntityFilters.All, LogicalName = entityName, Retri
RetrieveEntityRequest mdRequest = new RetrieveEntityRequest()
{
EntityFilters = EntityFilters.All,
LogicalName = entityName,
RetrieveAsIfPublished = false
};
我尝试检索实体FormXML,但它也不存在:
private string GetFormXML(int objectTypeCode)
{
QueryExpression q = new QueryExpression("systemform");
q.ColumnSet = new ColumnSet("formxml");
q.Criteria.AddCondition(new ConditionExpression("type", ConditionOperator.Equal, 2));
q.Criteria.AddCondition(new ConditionExpression("objecttypecode", ConditionOperator.Equal, objectTypeCode));
var entities = ctx.OrganizationService.RetrieveMultiple(q);
if (entities != null)
{
return entities.Entities.First().Attributes["formxml"].ToString();
}
else
{
return "";
}
}
有什么建议吗?我认为systemform实体将objecttypecode作为字符串,它接受实体名称,而不是真正的实体对象类型代码。能否尝试将对象类型代码从数字更改为实体名称
private string GetFormXML(int objectTypeCode)
{
QueryExpression q = new QueryExpression("systemform");
q.ColumnSet = new ColumnSet("formxml");
q.Criteria.AddCondition(new ConditionExpression("type", ConditionOperator.Equal, 2));
q.Criteria.AddCondition(new ConditionExpression("objecttypecode", ConditionOperator.Equal, "contact"));
var entities = ctx.OrganizationService.RetrieveMultiple(q);
if (entities != null)
{
return entities.Entities.First().Attributes["formxml"].ToString();
}
else
{
return "";
}
}
公共字典GetNevegationItems(int objectTypeCode)
{
QueryExpression q=新的QueryExpression(“systemform”);
q、 ColumnSet=新列集(“名称”、“格式”);
q、 AddCondition(新的ConditionExpression(“type”,ConditionOperator.Equal,2));
q、 AddCondition(新的ConditionExpression(“objecttypecode”,ConditionOperator.Equal,objecttypecode));
var entities=ctx.OrganizationService.RetrieveMultiple(q);
if(实体!=null)
{
字典rslt=新字典();
foreach(entities.entities中的var项)
{
rslt.Add(item.GetAttributeValue(“formid”)、item.GetAttributeValue(“name”);
}
返回rslt;
}
其他的
{
返回null;
}
}
我在检索FormXml方面没有问题,我在那里找不到我要找的内容。我在找formid描述,你没试过吗?queryExpression.ColumnSet=新列集(“formxml”、“formid”、“description”);我尝试了你的代码,得到了“一个给定实体的所有表单的列表”,什么不适合你?
public Dictionary<Guid, string> GetNevegationItems(int objectTypeCode)
{
QueryExpression q = new QueryExpression("systemform");
q.ColumnSet = new ColumnSet("name", "formid");
q.Criteria.AddCondition(new ConditionExpression("type", ConditionOperator.Equal, 2));
q.Criteria.AddCondition(new ConditionExpression("objecttypecode", ConditionOperator.Equal, objectTypeCode));
var entities = ctx.OrganizationService.RetrieveMultiple(q);
if (entities != null)
{
Dictionary<Guid, string> rslt = new Dictionary<Guid, string>();
foreach (var item in entities.Entities)
{
rslt.Add(item.GetAttributeValue<Guid>("formid"), item.GetAttributeValue<string>("name"));
}
return rslt;
}
else
{
return null;
}
}