1

我正在尝试根据帐户表单中的“两个选项”字段更新子联系人。如果“两个选项”字段设置为“是”,我会将所有子联系人更新为父帐户的更新地址。我尝试使用以下代码检索值,

bool? updateContactsValue 
  = entity.GetAttributeValue<bool?>("abc_yesNoField");

if (updateContactsValue)
{
  String[] details = new string[7];
  String telephoneNum = String.Empty, ... , country = String.Empty;

  telephoneNum = entity.GetAttributeValue<String>("telephone1");
  details[0] = telephoneNum;
  ...

  UpdateContact(service, entity.Id, details);
}

但是我发现即使选择的选项是“是”,地址字段也没有被更新。我在这里错过了什么吗?

大家好,我修改代码如下

bool? updateContactsValue=null; 
updateContactsValue = entity.GetAttributeValue<bool?> ("abc_yesNoField").GetValueOrDefault();

throw new Exception( "My custom Exception"+" "+entity.GetAttributeValue<bool?>("abc_yesNoField").GetValueOrDefault().ToString());  

即使我选择了“是”,系统也会抛出“假”。

4

4 回答 4

1

这只是从臀部的一个镜头,因为我现在不在电脑前,但我很确定你(出于某种我现在无法判断的原因)未能获取值并获得布尔值为空。并且更新的执行以它为条件为true

您需要以不同的方式检查该字段的值。

我不确定,但我希望 yes/no 元素是bool而不是可为空的 bool。如果你这样走会怎样?它编译吗?

bool updateContactsValue 
  = entity.GetAttributeValue<bool>("abc_yesNoField");

if (updateContactsValue) { ... }
于 2013-03-28T23:14:49.410 回答
1

问题可能是由于您使用的是Scheema Name即混合大小写。 abc_yesNoField不能是属性 bcoz 的名称,它使用大小写混合。它应该像 abc_yesnofield 一样小写

bool? updateContactsValue= entity.GetAttributeValue<bool?>("abc_yesnofield");

始终使用属性的逻辑名称,即名称(始终小写)在:
1. Xrm
2. c# 代码后期绑定

使用Scheema属性名称,即(混合大小写或驼峰式大小写):
1. REST/oData/JSON 对象模型
2. c# 早期绑定类 (LINQ)

于 2014-01-27T12:31:47.303 回答
1

错误在查询语句中,请确保您已在其中插入属性。如果它没有被插入,它总是会给你错误的值,例如:

QueryExpression query = new QueryExpression("ntw_abc");
query.ColumnSet = new ColumnSet("ntw_referencenumber", "abc_yesNoField");
于 2014-01-21T12:47:50.707 回答
1

可能你写错了你的字段名,它不能是“updatechildcontacts”。因为是自定义字段,它必须以前缀开头,例如 new_updatechildcontacts

于 2013-03-28T21:29:00.700 回答