zoukankan      html  css  js  c++  java
  • Microsoft Dynamics CRM 2011中,Lookup字段的赋值

        在微软CRM中,有一种名为“查找”类型的字段,以代表子表中的外键字段,这种字段,被称为查找类型字段,lookup字段,或者EntityReference字段。该字段的数据类型是Guid——Microsoft Dynamics CRM中,数据表的主键的数据类型是Guid类型的。

        在MS CRM平台层,查找类型字段包含三方面的信息:

    • 第一,Guid值,即主表的主键值;
    • 第二,name值,即主表的主字段的值。所谓主字段信息,就是一条数据记录的摘要描述,例如客户实体的“name”字段——客户名称、系统用户实体的“fullname”字段——系统用户的全名,等等字段,都是主字段信息;
    • 第三,实体类型entityType,即当前外键链接的数据表信息,当然了,在Dynamics CRM平台范畴内,应该叫做实体名称;

        基于以上的解释,我们就可以了解,和查找类型字段打交道时,需要:

    • 获取查找类型字段值时,可以从该字段值中解析出Guid、name以及entityType;
    • 在为查找类型字段赋值时,需要将Guid、name以及entityType三个值拼装起来,而后赋值给查找类型字段;

        样例代码如下:

    //读取电话联络表单中的“负责人”字段值

       1:  var owner = Xrm.Page.getAttribute("ownerid");
       2:  if (owner == null)
       3:      return;
       4:  else
       5:      owner = owner.getValue();
       6:   
       7:  if (owner == null)
       8:      return;
       9:   
      10:  var ownerId = owner[0].id;
      11:  var ownerName = owner[0].name;
      12:  var ownerEntityType = owner[0].entityType;
      13:   
      14:  var alertMsg = "当前记录的负责人ID:" + ownerId + "\r\t" +
      15:      "当前记录的负责人名字:" + ownerName + "\r\t" +
      16:      "当前记录的负责人的实体类型:" + ownerEntityType;
      17:   
      18:  alert(alertMsg);

    可以在“电话联络”表单的OnLoad事件中,执行上述代码,以验证效果。

        某些表单的查找字段,可以允许关联多条记录,例如电话联络表单中的“接听人”字段。而正是由于这种字段的存在,所以才有了上面代码中使用owner[0]去获取数据值的代码。换而言之,无论是允许单选,还是允许多选,都是一个查找类型字段,为了满足两种情况,查找类型字段使用了数组去承载该字段所关联的数据记录,每个数组元素对应一个关联的数据记录,每条数据记录中包含有三部分信息,即id、name以及entityType。

        故此,在进行允许关联多条记录的查找字段进行操作的时候,就是拼装一个数组,每个数组元素对应一个关联记录,每个元素有三个属性:id、name以及entityType。样例代码如下:

    //魏电话联络表单中的“接听人”字段赋值

       1:  if (typeof(daemonlin) == "undefined") {
       2:      daemonlin = {};
       3:  }
       4:   
       5:  if (typeof(daemonlin.PhoneCall) == "undefined") {
       6:      daemonlin.PhoneCall = {};
       7:  }
       8:   
       9:  daemonlin.PhoneCall.Form =
      10:  {
      11:      onLoadHander: function () {
      12:          var toValue = new Array();
      13:          toValue[0] = new Object();
      14:          toValue[0].id = "8C8BEEC7-CAFC-E011-A7EB-0800273C14DE";
      15:          toValue[0].entityType = "account";
      16:          toValue[0].name = "小林商店 (示例)";
      17:   
      18:          toValue[1] = new Object();
      19:          toValue[1].id = "3E0AD1DF-3359-E111-9BFB-0800273C14DE";
      20:          toValue[1].entityType = "account";
      21:          toValue[1].name = "test"; 
      22:   
      23:          Xrm.Page.getAttribute("to").setValue(toValue);
      24:      }
      25:  }
  • 相关阅读:
    C++解析一些我们需要的数据
    C语言0数组、柔性数组使用介绍
    正点原子T100智能焊台-试用-拆机测评
    简单工厂模式、工厂模式、抽象工厂模式比较
    一次小模块的使用过程-LC12S无线模块介绍
    正点原子DS100拆解全过程-硬件工程师必备
    STM32通过rosserial接入ROS通讯开发
    Linux下实现Firewalld Net 外网端口转发至内网
    Windows中使用netsh portproxy端口转发
    低延迟网穿透工具FRP
  • 原文地址:https://www.cnblogs.com/StoneGarden/p/2625224.html
Copyright © 2011-2022 走看看