如何向查找字段添加值

本文关键字:添加 字段 查找 | 更新日期: 2023-09-27 17:57:38

我有一个实体"帐户",它在Microsoft Dynamics CRM中有一些名称字段。除了查找字段之外,还可以每隔一个字段插入一个值。如何在查找中选择现有值????

我使用以下代码为查找字段添加值。。但是我没有任何错误。。

Account acc = new Account();
acc.Attributes["name"] = "Ram"; // this values got inserted
acc.Attributes["age"] = "22"; // this values got inserted
acc.Attributes["lookupfieldid"] = "Sampletext";
service.Create(acc); // to create account

为了在查找字段中选择"主要"值,我需要如何更改代码?

如何向查找字段添加值

CRM 2011中的查找字段为EntityReference,这意味着您需要知道查找所指向实体的LogicalName和记录的Id

所以你的代码将是:

Account acc = new Account();
acc.Attributes["name"] = "Ram"; // this values got inserted
acc.Attributes["age"] = "22"; // this values got inserted
acc.Attributes["lookupfieldid"] = new EntityReference("contact", contactId); // if lookupfieldid is pointing to contact entity
service.Create(acc); // to create account

一个考虑因素:你写了

Account acc = new Account();

我不知道您使用的是早绑定(指crmsvcutil.exe生成的类)还是晚绑定(在这种情况下,您将编写Entity acc = new Entity("account");

但如果使用早期绑定,语法将类似于:

Account acc = new Account();
acc.Name = "Ram"; // this values got inserted
acc.Age = "22"; // this values got inserted
acc.LookupFieldId = new EntityReference("contact", contactId); // if lookupfieldid is pointing to contact entity
service.Create(acc); // to create account

使用早期绑定,您将提前知道字段所期望的正确类型。

根据您所描述的,帐户类型是一个带有名称字段(new_name)的实体(假设它被称为new_accounttype),有三个名为"Primary"、"Secondary"answers"Other"的实例。Lookupfieldid是一个链接到new_account类型表的外键。这意味着,为了将帐户类型查找设置为"主要",您需要知道帐户类型实例的guid,其中new_name="主要"。

//Retrieve "Primary" account type
QueryExpression query = new QueryExpression("new_accounttype");
query.Criteria.AddCondition("new_name", ConditionOperator.Equal, "Primary");
Entity accountType = service.RetrieveMultiple(query).Entities.First();
//Set the lookup as Guido described above
Account acc = new Account();
acc.Attributes["name"] = "Ram";
acc.Attributes["age"] = "22";
acc.Attributes["lookupfieldid"] = new EntityReference("new_accounttype", accountType.Id);
service.Create(acc);

获取查找字段的值

EntityReference entref = (EntityReference)item.Attributes[attributeName];
var LookupId = entref.Id;
var logicalName = entref.LogicalName;

设置查找字段的值

newAccount[attributeName] = new EntityReference(logicalName, LookupId);