在实施的过程中我们经常会遇到这样的场景,有个系统标准的Lookup字段对应的不是一种Entity,如很多地方的客户实际上可选account或者contact,有的地方可选systemuser或者team,而客户或者实际情况要求只能选择一种Entity,这时我们可以将Lookup字段的视图锁定或者默认为某一个视图。

常用的方法有两种,第一种比较简单,但是不是SDK支持的方法,很可能在下一版本就不支持了;第二种方法是SDK中提供的标准方法

方法一:通过Dom设置视图

var contactList = document.getElementById("optionalattendees");
contactList.setAttribute("lookuptypes", "8");
contactList.setAttribute("defaulttype", "8");
Xrm.Page.getControl("optionalattendees").setDefaultView("{E88CA999-0B16-4AE9-B6A9-9EDC840D42D8}");

方法二:通过addCustomView

controlObj.addCustomView(
viewId
,
entityName
,
viewDisplayName
,
fetchXml
,
layoutXml
,
isDefault
)

function setCustomViewForQuoteProduct(){
var viewId="{597E9C69-9E45-E211-A8C9-00155D095101}";
var entityName = "product";
var viewDisplayName = "整机查询视图";
var fetchXml="<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>"+
"<entity name='product'>"+
"<attribute name='name' />"+
"<attribute name='new_cpxh' />"+
"<attribute name='new_productname' />"+
"<attribute name='producttypecode' />"+
"<attribute name='new_cplb' />"+
"<attribute name='new_sjcp' />"+
"<attribute name='productnumber' />"+
"<attribute name='productid' />"+
"<order attribute='name' descending='false' />"+
"<filter type='and'>"+
"<condition attribute='new_fl' operator='eq' value='100000000' />"+
"<condition attribute='new_productlevel' operator='eq' value='2' />"+
"</filter>"+
"</entity>"+
"</fetch>";
var layoutXml = "<grid name='resultset' " +
"object='1' " +
"jump='name' " +
"select='1' " +
"icon='1' " +
"preview='1'>" +
"<row name='result' " +
"id='productid'>" +
"<cell name='name' " +
"width='300' />" +
"<cell name='new_cplb' " +
"width='100' />" +
"<cell name='productnumber' " +
"width='100' />" +
"<cell name='new_cpxh' " +
"width='150' />" +
"<cell name='new_sjcp' " +
"width='150' />" +
"</row>" +
"</grid>";
Xrm.Page.getControl("productid").addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml,false);
Xrm.Page.getControl("productid").setDefaultView(viewId);
}

使用SDK中的方法是我喜欢的方式(之前碰到过使用非标准的方法结果在Rollup的时候出现BUG的情况),不过这种方法稍微麻烦一点,FetchXml可以通过高级查找直接得到,而LayoutXml通常要手动去拼凑(估计在solution或者数据库View表中有办法获取,只是没去尝试了),但是还是建议用这种方法

Dynamics CRM 2011通过客户端代码选择视图的更多相关文章

  1. Step by step Dynamics CRM 2011升级到Dynamics CRM 2013

    原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...

  2. Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法(转)

    本篇文章,介绍Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法. RetreiveMultiple方法,用于获取实体的多个实例,该方法的签名如下 ...

  3. Microsoft Dynamics CRM 2011 安装完全教程

    作者:卞功鑫,转载请保留.http://www.cnblogs.com/BinBinGo/p/4302612.html 环境介绍 WINDOWS 2008 R2 Datacenter Microsof ...

  4. Dynamics CRM 2011 权限管理(转)

    http://www.cnblogs.com/LeoTang/p/3344265.html Dynamics CRM 2011 权限管理 CRM系统基于角色的权限主要通过部门.角色.用户.团队来 进行 ...

  5. Microsoft Dynamics CRM 2011 相关-摘自网络

    Microsoft Dynamics CRM Server 2011硬件需求: 组件 *最低要求 *推荐配置 处理器 x64 体系结构或兼容的双核 1.5 GHz 处理器 四核 x64 体系结构 2 ...

  6. Dynamics CRM 2011编程系列(60):JS编程之CRUD辅助类(JQuery版)

    今天给大家分享一个JQuery版的REST辅助类,在一年前我分享过一个只能在IE环境下运行的REST辅助类:<JS编程之实体CRUD辅助类 >.为什么要推出JQuery版的CRUD辅助类呢 ...

  7. Microsoft Dynamics CRM4.0 和 Microsoft Dynamics CRM 2011 JScript 方法对比

    CRM 2011 如果需要再IE里面调试,可以按F12在前面加上contentIFrame,比如 contentIFrame.document.getElementById("字段" ...

  8. How to control PrincipalObjectAccess table growth in Microsoft Dynamics CRM 2011

    https://support.microsoft.com/en-us/kb/2664150 How to control PrincipalObjectAccess table growth in ...

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

    XrmServiceToolkit - A Microsoft Dynamics CRM 2011 & CRM 2013 JavaScript Library http://xrmservic ...

随机推荐

  1. truts2标签-forEach标签

    <c:forEach begin="1" end="${obj.portnum}" step="1" varStatus=" ...

  2. 树状数组【bzoj1103】: [POI2007]大都市meg

    1103: [POI2007]大都市meg 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了. 不过,她经常回忆起以前在乡间漫步的情景.昔日,乡 ...

  3. win10全半角切换

    shift+sapce shift+sapce:全半角切换快捷键,编程的时候发现英文是这种状态,就需要用快捷键切换成半角. (查过老是忘记,在这里写一下记住它)

  4. IDEA总是启动不了

    时常怎么都打不开这个软件,或者很久很久才打开. 解决办法:在任务管理器将IDEA结束进程,再去打开软件,就可以了.

  5. java 调用本地应用程序 Java打开(.word,.txt,.pdf)文件

    https://blog.csdn.net/lebron3v/article/details/80741000

  6. bcb6重启应用程序

    在工程的cpp文件中WinMain还是得最后添加如下的代码(其中g_blsRunAgain为bool类型的全局变量,在需求重启的时候先将g_blsRunAgain置为true,再将程序关闭,之后就会重 ...

  7. C语言单片机中延时程序的实现

    在单片机或嵌入式系统的程序,常常用规定次数的空循环来实现延时 /** * 通过一个空循环体循环让程序运行一段时间.在嵌入式系统中,这个函数用来实现延时. * * 参数: *    u16 i -- 循 ...

  8. jquery each循环,实现break和continue的功能

    break----用return false; continue --用return ture;

  9. keepalived企业管理

    实践案例一:更改nginx反向代理只监听vip地址 10.0.0.3/nana.html 可以使用 10.0.0.5/nana.html  不可以使用 10.0.0.6/nana.html  不可以使 ...

  10. CHUCK手把手带你搞定OPENSTACK

    一.OpenStack初探 1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运行自己的云计算和存储设施.Rackspace与NASA是最初重要 ...