0

我正在 CRM 2011 中制作一个插件。该插件通过使用 fetchXML 从实体的子网格中获取数据,使用数据进行一些计算,在插件结束时我想将新的计算数据设置回子网格中,但我不能 ...

我尝试了几种方法来做到这一点:

(1)

    private static OptionSetValue CreateOptionSet(int optionSetValue)
    {
        OptionSetValue optionSetInstance = new OptionSetValue();
        optionSetInstance.Value = optionSetValue;
        return optionSetInstance;
    }

(2)

    public void setVal(Entity entity, string attr, object val)
    {
        if (entity.Attributes.Contains(attr))
        {
            entity[attr] = val;
        }
        else
        {
            entity.Attributes.Add(attr, val);
        }
    }

并且只是

paid["zbg_paidamount"] = 400;


payment.Attributes["zbg_suggestedamount"] = paidVal;

但是没有任何效果...

我在想可能是来自我试图设置但不确定的数据类型。

请如果你能帮助我,我很绝望。

谢谢

4

1 回答 1

2

即使看起来你已经解决了你的问题,你的代码的每个部分都有问题......

(1) - 使用 int 构造函数OptionSetValue

(2) - 不用担心检查值是否存在,直接在实体上设置即可(也不用担心访问Attributes集合)

payment["zbg_paidamount"] = new OptionSetValue(400);

回应 Draiden 的评论

Entity 类上的索引器将自动处理添加或更新值。这是一个示例 LinqPad 程序:

Linqpad 示例

于 2013-11-08T16:24:50.743 回答