【问题标题】:Setting BusinessEntity picklist value using CRM 4.0 webservice使用 CRM 4.0 网络服务设置 BusinessEntity 选项列表值
【发布时间】:2009-11-20 11:43:26
【问题描述】:

我正在尝试在 CRM 4.0 中创建 ImportMap 对象。我需要设置作为 Picklist 值的 TargetEntity 属性。 link text 似乎暗示可以使用

importmap map = new importmap();
map.name = "test map";
map.targetentity = new Picklist();
map.targetentity.name = "Contact"

但这似乎总是将目标实体属性保留为空。

有什么想法吗?

【问题讨论】:

    标签: c# web-services dynamics-crm dynamics-crm-4


    【解决方案1】:

    如果是选择列表,则必须提供索引值。假设您有一个名为 TargetValues.Contact 的枚举值为 1,那么它将如下所示:

    map.targetentity = new Picklist();
    //map.targetentity.name = "Contact"
    map.targetentity.Value = Convert.ToInt32(TargetEntities.Contact);
    

    -- 编辑--

    我相信,对于您要实现的目标,您必须以某种方式检索目标实体,然后才能枚举它们。

    See this,也许这会有所帮助。

    如果上面没有用,那么你可以这样做:

    1. 从 UI 打开的选择列表,记下索引的数量及其对应的值。
    2. 在代码中创建了一个枚举,并将这些值/索引分配给它。
    3. 在运行时使用枚举(如上例所示)来设置选择列表。

    但不知何故,索引可能会在一段时间内发生变化,因此在这种情况下,您可以使用这些值/索引创建一个枚举 xml,并在运行时加载它们。但这种方法的问题在于:

    1. 每次有人要更改索引,这种情况很少见,管理员也必须更改xml文件。
    2. 加载外部 xml 文件是一项开销。

    不是很好的方法,但是在截止日期前运行这是你可以做的;这永远不会破坏或造成麻烦。只是那个xml加载部分不好。

    顺便说一句,如果你通过 CRM SDK,你会发现类似的例子。

    【讨论】:

    • 谢谢,这就是我的想法。问题是我试图设置的这个选择列表实际上是系统中所有实体类型的列表,包括自定义的,所以我在设计时不知道索引是什么。有没有办法动态加载和枚举选项列表?谢谢
    • 马特,抱歉回复延迟;请查看我的更新回复。
    【解决方案2】:

    将此函数用于动态请求选项列表值:

    public IDictionary<int,string> PickListValues(string entityname, string attributename)
    {
        var req = new RetrieveAttributeRequest();
        req.EntityLogicalName = entityname;
        req.LogicalName = attributename;
        req.RetrieveAsIfPublished = true;
    
        var response = (RetrieveAttributeResponse)Service.MetaDataService.Execute(req);
    
        var picklist = (PicklistAttributeMetadata)response.AttributeMetadata;
    
        var res = new Dictionary<int,string>();
    
        foreach (var item in picklist.Options)
           res.Add(item.Value.Value, item.Label.UserLocLabel.Label);
    
        return res;
    }
    

    【讨论】:

    • dynamics-crm-4 似乎不存在“RetrieveAttributeRequest”类(它在 2011 年存在..)。这个问题的crm-4解决方案是什么?
    • 以上评论不属实,我只需要生成元数据服务的类,见:stackoverflow.com/questions/10511528/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多