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

crm lookup的更多相关文章

  1. CRM lookup筛选

    function Loadcouse() { var type; var id; retrieveRecord(Xrm.Page.getAttribute("ownerid").g ...

  2. Microsoft Dynamics CRM4.0 JScript 过滤lookup 出现 Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止。

    一.现象:JScript过滤lookup字段,选择lookup字段出现下图的情况: 出现:Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止.请将这台Micro ...

  3. CRM JS 设置lookup字段 setSimpleLookupValue

    function setSimpleLookupValue(LookupId, Type, Id, Name) { /// <summary> /// Sets the value for ...

  4. CRM 2016 自定义lookup过滤

    function preFilterLookup() { //终端业态 Xrm.Page.getControl("new_typeofoperationid").addPreSea ...

  5. CRM 2013 限制Lookup

    var oTo = document.getElementById("customerid_i"); oTo.setAttribute("defaulttype" ...

  6. Dynamics CRM 2011/2013 通过Javascript给lookup字段赋值

    仅仅做下记录,因为老是用到但老是忘记 var value = new Array(); value[0] = new Object(); value[0].id = idValue; value[0] ...

  7. CRM基于.NET的增删改查

    一.准备工作: 1.添加 microsoft.crm.sdk.proxy.dll和microsoft.xrm.sdk.dll 引用到项目中!并引用以下using! using Microsoft.Xr ...

  8. CRM 2011 Install Errors - Tips and Tricks continued(转)

    The more I get to install/upgrade to CRM 2011 in different environment the more I come across differ ...

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

    上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传.显示及下载.包括以下几个步骤: 附件上传的web页面 附件显示及下载的附件实体 调用上传web页面的JS文件 实体上 ...

随机推荐

  1. springboot-28-security(一)用户角色控制

    spring security 使用众多的拦截器实现权限控制的, 其核心有2个重要的概念: 认证(Authentication) 和授权 (Authorization)), 认证就是确认用户可以访问当 ...

  2. Solidity的自定义结构体深入详解

    一.结构体定义 结构体,Solidity中的自定义类型.我们可以使用Solidity的关键字struct来进行自定义.结构体内可以包含字符串,整型等基本数据类型,以及数组,映射,结构体等复杂类型.数组 ...

  3. 第七章 过滤器基础 Filter

    简介:SUN从Servlet2.3开始添加一项激动人心的功能,就是过滤器(Filter).WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图 ...

  4. study design of ADNI

    AD(Alzheimer’s disease):不可逆的神经退化,患病人员会由于脑部问题的恶化而导致心智功能不健全. ADNI:阿尔茨海默氏症神经成像项目 ADNI的总体目标是验证用于阿尔茨海默病临床 ...

  5. How to describe the wind sprial in computer system?

    How to describe the wind sprial in computer system? 2017-02-21 刘崇军 风螺旋线 If we want get the approval ...

  6. GCD之定时器dispatch_source_t(转载暂时未完全理解)

    #import "ViewController.h" @interface ViewController (){ IBOutlet UIButton *l_timeButton; ...

  7. MFC函数—CSingleDocTemplate

    前提:在InitInstance() 函数的初始化过程中,我们可以看到代码CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDoc ...

  8. 【NOI2000】 单词查找树

    问题描述 在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里.为了提高查找和定位的速度,通常都画出与单词列表所对应的单词查找树,其特点如下: 根结点不包含字母,除根结点外每一个结点都仅包 ...

  9. mongdb基本操作和更新操作

    1.创建数据库 use hqj 不会真正的创建db,只有insert之后才会创建2.查看数据库show dbs3.插入文档db.hqj.insert({name:'111'})4.查看所有的文档sho ...

  10. 消息推送SignalR简单实例

    消息推送SignalR:一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信. 功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请 ...