【问题标题】:Retrieving "two option" field value on the plugin in CRM 2011在 CRM 2011 中的插件上检索“两个选项”字段值
【发布时间】:2013-03-28 21:21:40
【问题描述】:

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

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());  

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

【问题讨论】:

  • 我冒昧地大幅缩减您的代码,以说明问题的基本部分。希望你喜欢。
  • 最好做一个简单的 var value = entity["abc_yesNoField"];要检索真实的字段值,请尝试使用此变量抛出 execption
  • 我敢打赌,如果您故意拼错字段名称,您会得到相同的行为。请检查一下。另外,请您更好地对示例进行换行吗?
  • 嗨,我确实尽我所能来格式化我的问题。谢谢 Guido,我确实按照你的想法抛出异常来看看我得到了什么价值,即使“是”被选中。

标签: dynamics-crm-2011 crm


【解决方案1】:

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

【讨论】:

  • 谢谢,但我确实有前缀,我只是在这里删除它。
  • 这种情况下你需要调试插件(或者如果插件是同步注册的则抛出异常)看看你得到的是哪个值
【解决方案2】:

这只是从臀部的一个镜头,因为我现在不在电脑前,但我相当确定你(出于某种我现在无法判断的原因)未能获取价值并且让 bool 为空。并且更新的执行取决于它是否为 true

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

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

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

if (updateContactsValue) { ... }

【讨论】:

  • 那是我最初的尝试,它没有工作。此外,我的早期绑定类页面具有可为空的 bool 作为返回类型。所以想到了拥有 Nullable Bool Type 本身。
  • 嗯...我在早期绑定方面做得不多,所以我有点不确定。 “顺便说一句,它不起作用”是什么意思?
  • 我的意思是我有你上面提到的确切行,孩子联系人没有按预期更新。但它没有抛出错误。
  • 我的意思是 - 它以什么方式不起作用?你遇到了什么问题?我问是因为也许问题出在你的课程上。
  • 我的意思是我有你上面提到的确切行,孩子联系人没有按预期更新。但它没有抛出错误。
【解决方案3】:

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

QueryExpression query = new QueryExpression("ntw_abc");
query.ColumnSet = new ColumnSet("ntw_referencenumber", "abc_yesNoField");

【讨论】:

    【解决方案4】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 2012-10-10
      • 2012-07-09
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      相关资源
      最近更新 更多