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:  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM