[英]CRM 2011 Online C# Check if Opportunity is Won
我需要检查插件在执行任何代码之前是否已赢得机会。 据我了解,您无法在CRM在线部署中使用机会赢得的插件消息。
这是我的代码片段:
//Get the target entity
Entity entity = (Entity)context.InputParameters["Target"];
OptionSetValue entityStatusCode =
(OptionSetValue)entity.Attributes["statuscode"];
if (entityStatusCode.Value == 3)
{
//Code to execute if opportunity won
}
这会引发错误'给定的密钥不在字典中'。 我用Google搜索,似乎无法找到解决方案。 任何人都可以解释我在这里需要做什么吗?
提前致谢。
(OptionSetValue)entity.Attributes["statuscode"];
我猜这条线会给你错误。
当一个插件触发时,默认情况下它只提供在调用插件的事件中已更改的属性。
换句话说,如果更新商机名称,则会触发插件,但属性包仅包含name
属性。
所以statuscode
这里没有被传递,因此该代码失败,因为,作为异常说,它是不是在字典。
至于如何解决它,有点取决于你需要检查机会是否赢得的原因。 但最简单(但不一定最有效)的方法是回调CRM以获取价值。
var entity = service.Retrieve(Target.LogicalName, Target.Id, new ColumnSet(true));
var entityStatusCode = (OptionSetValue)entity.Attributes["statuscode"];
if (entityStatusCode.Value == 3)
{
//Code to execute if opportunity won
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.