使用C#从CRM 365中的Lookup动态获取价值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用C#从CRM 365中的Lookup动态获取价值相关的知识,希望对你有一定的参考价值。
我有一个实体“new_trialxrmservicetoolkit”,我有查询字段“new_LookupTransactionHeader”,它链接到“new_transactionheader”实体。
怎么解决这个?
我遵循这个tutorial,但没有解决我正在寻找的。
我的代码:
new_trialxrmservicetoolkit t = new new_trialxrmservicetoolkit();
ColumnSet myAttributes = new ColumnSet(new String[] { "new_LookupTransactionHeader" });
Entity myEntityHavingLookup = service.Retrieve("new_transactionheader", t.id, myAttributes);
var myLookupId = ((Microsoft.Xrm.Sdk.EntityReference)(myEntityHavingLookup.Attributes["new_LookupTransactionHeader"])).Id;
throw new InvalidPluginExecutionException(myLookupId.ToString()); // catch this result
答案
此代码是否在为“new_trialxrmservicetoolkit”注册的插件中运行?如果是,则使用以下代码。
var entity = (Entity)context.InputParameters["Target"];
if (entity.LogicalName != "new_trialxrmservicetoolkit")
return;
var entityId= entity.Id;
ColumnSet myAttributes = new ColumnSet(new String[] { "new_LookupTransactionHeader" });
Entity myEntityHavingLookup = service.Retrieve("new_trialxrmservicetoolkit", entityId, myAttributes);
var myLookupId = ((Microsoft.Xrm.Sdk.EntityReference)(myEntityHavingLookup.Attributes["new_LookupTransactionHeader"])).Id;
throw new InvalidPluginExecutionException(myLookupId.ToString());
如果插件用于“删除”消息,请更改我的代码的第一行:
var entity = (EntityReference)context.InputParameters["Target"];
另一答案
t
是new_trialxrmservicetoolkit
类型,你不能使用t.id
为new_LookupTransactionHeader
类型。
从targetentity
获取查找ID并使用它来检索其他列。
另一答案
获取查找字段的值
EntityReference entref = (EntityReference)item.Attributes[attributeName];
var LookupId = entref.Id;
var logicalName = entref.LogicalName;
设置查找字段的值
newAccount[attributeName] = new EntityReference(logicalName, LookupId);
设置查找字段的空值
newAccount[attributeName] = Null;
以上是关于使用C#从CRM 365中的Lookup动态获取价值的主要内容,如果未能解决你的问题,请参考以下文章
使用工作流 C# 向 CRM 365 中的所有联系人发送电子邮件生日?
Javascript padStart() 在警报框中正常工作,但在 Dynamics 365 CRM 中的电子邮件记录中不能正常工作
将数据从 Azure DWH 复制到 Azure 中的 Dynamics 365