【问题标题】:MSCRM, retrieve entity forms listMSCRM,检索实体表格列表
【发布时间】:2014-07-13 14:24:45
【问题描述】:

我需要给定实体的所有表单列表(多表单);我知道客户端 Javascript 代码中的解决方案,但我使用的是服务器端代码。

我尝试使用此消息获取实体元数据,但在那里找不到:

    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 "";
        }
}

有什么建议吗?

【问题讨论】:

  • 我尝试了您的代码并得到了“给定实体的所有表单的列表”什么不适合您?

标签: dynamics-crm


【解决方案1】:

我认为 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 "";
        }
}

【讨论】:

  • 我在检索 FormXml 时没有任何问题,我在那里找不到我要找的东西。我正在寻找强大的描述
  • 你试过了吗? queryExpression.ColumnSet = new ColumnSet("formxml","formid","description");
【解决方案2】:
        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;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多