crm lookup

1. 大家都知道CRM 里面的Lookup 保存了相关实体的GUID,让我们深入的了解一下CRM Lookup。当我们在2个实体间建立关系的时候,CRM自动生成了一些attributes来保存相关实体的信息,虽然我们在CRM定制界面只能看到一个 attribute,也就是保存GUID的那个,其实CRM还创建了一些隐含的attributes来保存其他信息,来看一个例子:

crmForm.all.regardingobjectid.DataValue[0].id;  // The GUID of the lookup.
crmForm.all.regardingobjectid.DataValue[0].name;  // The text value of the lookup.
crmForm.all.regardingobjectid.DataValue[0].typename;  // The entity type name.

这也就是为什么我们可以引用除了GUID的其他相关信息,这些隐含的attributes可以通过导出实体的customisation.xml 来看到。
也许有人注意到了,在CRM里,所有user-owned entity(比如 account, contact, case, email etc) 都有一个系统attribute叫做 ownerbusinessunit,这也是个Lookup,但却是系统的Lookup。这个attribute用来记录记录所有者(the owner)所在BusinessUnit的GUID。CRM论坛里一个常见的问题就是怎样得到当前用户的BusinessUnit,最常用的方法是通过AJAX来得到,见我以前的Blog有提。其实我们可以利用ownerbusinessunit来做,方法是导出customisation.xml 进行修改然后导入,这样才可以把ownerbusinessunit加到窗体上。注意这种方法只能得到GUID,不能得到BU‘s Name,原因上面已经说了,因为是系统的Lookup,CRM没有创建Name这个attribute。到此为止这种方法是比AJAX来的简单,但如果要得到BU‘s Name就不如食用AJAX了。

2. 我们来看看regardingobjectid这个特殊的Lookup,当用户选择Regarding的时候,也许那个下拉菜单会有很多选项:Account, Contact, Opportunity, Lead.... ,如果我只想显示Account 和Contact,并且把默认值设定为Contact怎么办呢? 在onLoad() 里面写如下语句:

crmForm.all.regardingobjectid.setAttribute("lookuptypes", "1,2");  //only show account and contact
crmForm.all.regardingobjectid.setAttribute("lookuptypeIcons", "/_imgs/ico_16_1.gif :/_imgs/ico_16_2.gif");  //set the icons
crmForm.all.regardingobjectid.setAttribute("defaulttype", "2");  //default to contact

除了使用setAttribute 方法,还可以使用CRM自己的方法:

crmForm.all.regardingobjectid.lookuptypes = "1,2";    
  crmForm.all.regardingobjectid.lookuptypeIcons = "/_imgs/ico_16_1.gif:/_imgs/ico_16_2.gif";
crmForm.all.regardingobjectid.defaulttype = "2";

3. 如果你注意一下Lookup的地址URL,你会发现CRM是这样调用的:
/lookupsingle.aspx?class=ActivityRegarding&objecttypes=1,2,3,4&browse=0&ShowNewButton=1&ShowPropButton=1&DefaultType=0

lookupsingle.aspx有一些参数可以被我们所用(ISV, IFRAME):

Objecttypes 实体代码, e.g. Objecttypes = "1, 2" //show account and contact
      DefaultType 默认实体代码, e.g. DefaultType = "2" //default to contact
      Browse  布尔值,  0 = 显示"查找" 栏; 1 = 浏览模式, 隐藏 "查找" 栏.
      ShowNewButton 布尔值,  0 = 隐藏 "新建" 按钮; 1 = 显示 "新建" 按钮.
      ShowPropButton 布尔值,  0 =  隐藏 "属性" 按钮; 1 = 显示 "属性" 按钮.

在IFRAME或者ISV里,如果我们不想显示"新建" 按钮,那么可以把URL调用写成:
/lookupsingle.aspx?class=ActivityRegarding&objecttypes=1,2,3,4&browse=0&ShowNewButton=0&ShowPropButton=1&DefaultType=0

但是如果我想在CRM里面隐藏 "新建" 按钮怎么办呢?你不能直接使用 crmForm.all.regardingobjectid.ShowNewButton = 0; 但是可以在onLoad()里使用下面的方法:

/*
   显示/隐藏 "新建" 按钮
   bShow = 0 : 隐藏 "新建" 按钮
   bShow = 1 :  显示 "新建" 按钮
*/
function NewButton(bShow)
{
    return function()
    {
        crmForm.all.regardingobjectid.AddParam("ShowNewButton", bShow);
    }
}
crmForm.all.regardingobjectid.attachEvent("setadditionalparams",NewButton(0));

原文地址 :http://www.cnblogs.com/MSCRM/articles/1184052.html

时间: 2024-10-16 22:47:11

crm lookup的相关文章

CRM JS 设置lookup字段 setSimpleLookupValue

function setSimpleLookupValue(LookupId, Type, Id, Name) { /// <summary> /// Sets the value for lookup attributes that accept only a single entity reference. /// Use of this function to set lookups that allow for multiple references, /// a.k.a 'party

CRM 2016 自定义lookup过滤

function preFilterLookup() { //终端业态 Xrm.Page.getControl("new_typeofoperationid").addPreSearch(function () { addLookupFilter(); }); } function addLookupFilter() { var customertypecode = Xrm.Page.getAttribute("customertypecode").getValue

Grid (read-only) objects and methods (client-side reference)获取子表单对象的一些方法 Crm 2016

https://msdn.microsoft.com/en-us/library/dn932126.aspx#BKMK_GridControl Updated: November 29, 2016 Applies To: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online You can set event handlers to execute scripts whe

crm2011创建Lookup类型的字段

在crm2011里面,创建lookup类型的字段不能直接创建,需要通过创建关系来创建,下面给出一个事例: using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Messages; using Microsoft.Xrm.Sdk.Metadata; using Microsoft.Crm.Sdk.Messages; /// <summary> /// 创建Lookup字段 /// </summary> publi

MSCRM4 在过滤后的LOOKUP框中实现查找

在MSCRM中让Lookup根据一定的条件实现过滤功能, 这个需求很常见, 在我接触的诸多项目中似乎都需要有这个功能. 但非常遗憾是, MSCRM 的SDK并没有提供实现这个功能的方法. 不过我们应该还是感到庆幸, 据说, 微软CRM产品组有透露下面这样的方法: 场景: 实体: 实体名 架构名 客户 account 联系人 contact 客户: 字段名 架构名 类型 关联实体 上级单位 parentaccountid lookup 客户 主要联系人 primarycontactid looku

Dynamices CRM JS 类库 神器 XrmServiceToolkit - A Microsoft Dynamics CRM 2011 &amp; CRM 2013 JavaScript Library

XrmServiceToolkit - A Microsoft Dynamics CRM 2011 & CRM 2013 JavaScript Library http://xrmservicetoolkit.codeplex.com/documentation 特殊用法Create 和 Update { id: Id, logicalName: "new_entityname", type: "EntityReference" };       //Loo

Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件

上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传.显示及下载.包括以下几个步骤: 附件上传的web页面 附件显示及下载的附件实体 调用上传web页面的JS文件 实体上r的上传按钮   首先来看一下效果: 先点击上面的上传按钮,然后就会弹出一个上传附件的界面,选择需要上传的文件,填写文件名,点击上传,成功后会在下面的文件grid里显示已上传的文件,双击下面的文件就会打开文件的详细信息: 然后还可以下载文件.   下面来看下实现方法 1. 附件上传的web页面 新建

Dynamics CRM 2015-Custom Workflow Activity

CRM的Workflow给我们的流程处理带来不少便利,但是这种自带的Workflow并不是万能的,中间某一step不能支持,往往会牵一发而动全身,可能造成整个Workflow Steps的重新设计.幸好CRM还提供了其它的方案来实现这类需求,这里要说的就是Custom Workflow Activity. 下面用个具体的实例来说明下,现在有Entity A,B,C,D,它们的关系是,A上有对B的Lookup字段BLookup,B上有C的Lookup字段CLookup,C上有D的Lookup字段D

Dynamic CRM 2013学习笔记(四十六)简单审批流的实现

前面介绍过自定义审批流: Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮 Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置 Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理 Dynamic CRM 2013学习笔记(三十四)自定义审批流5 - 自动邮件通知 Dynamic CRM 2013学习笔记(三十