[英]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.