随笔分类 - Dynamics CRM
摘要:Lookup图标不显示,并且出错类似: “this.get_element().save("LookupMruItems")”如果出现这种情况,试一下把网址从trusted site移到local intranet。昨天试了下,可以了。
阅读全文
摘要:今天更新一个Plugin时报错:Your subscription has the maximum amount of storage available. For additional storage, please contact our sales organization at 1-877-CRM-CHOICE (276-2464).原因是数据库服务器硬盘空间不足,运行以下SQL语句(注意数据库名改成相应的):USE [master]GOALTER DATABASE [TestDb] SET RECOVERY SIMPLE WITH NO_WAITDBCC SHRINKFILE(Tes
阅读全文
摘要:页面上有一个Lookup field,当选择一个记录时,同时要把这个记录的其他值也带到本页面来,其中有好多是Lookup来的。开始我用LinkEntity来取得它们的名字值,但是后来发现LinkEntity有数量限制,每条查询语句只能有10个LinkEntity,超过就报错,Advanced Find里也是一样的。所以,用LinkEntity并不是一个好办法,而且我只是要取得一个名字的值而已,直觉告诉我不用那么麻烦的。研究了一下,其实Fetchxml取的Lookup的值,不仅有GUID,名字的值也取到了,只不过名字值要经过一定的步骤转化才能拿到。下面是具体方法:首先,我们从返回的xml对象中取
阅读全文
摘要:需求:页面上有一个字段是Account类型的Lookup,另一个字段是Contact类型的Lookup。要求打开Contact lookup时只显示Account的Primary Contact的过滤视图。分析:要做到这个功能,首先要重写(增加)Contact lookup的“显示查找视图”的事件;然后,在页面加载的时候就要把这个事件添加到Contact lookup上,在Account的值发生变化时也要做相应的改变,比如Account的值被清空的情况下,我们的自定义过滤视图就应该显示全部的Contact,所以这时要再次改写“显示查找视图”的事件。步骤:(1)创建一个Javascript文件,
阅读全文
摘要:之前接手这个项目的时候,看到的设计是这样的:实体A的页面上有一个Lookup,连到实体B;实体B的所有Fields都要展示到实体A;实体A不能改动这些Fields;实体B改动了这些Fields,也要体现到实体A;在实体A重复创建和实体B一模一样的Fields……这样的设计非常无聊,既然实体A要展示那些Fields,又不能改,其实只要直接拿实体B的信息即可,不需要重复创建Fields。但是他们这样做是有原因的,因为CRM的sub grid展示形式很单一,无法达到用户的需要。于是,现在,我改成了用Htm Web Resource来实现。如图:上图中的红框的信息全是来自“Property”这个Loo
阅读全文
摘要:function UserHasRole(roleName){ var serverUrl = Xrm.Page.context.getServerUrl(); var oDataEndpointUrl = serverUrl + "/XRMServices/2011/OrganizationData.svc/"; oDataEndpointUrl += "RoleSet?$top=1&$filter=Name eq '" + roleName + "'"; var service = GetRequestOb
阅读全文
摘要:很拗口的标题 -_-|||需求:页面上有两个同样的Field——accountnumber,想Disable其中一个,究竟为什么有这么傻叉的需求就不讨论了,只关注于如何实现。看似简单的问题,实际做的时候却遇到问题,一开始,当然是用“Xrm.Page.getControl("accountnumber").setDisabled(true);”,结果发现不行,只有排在前面的那个Field被Disable了,另一个还是enable的。为什么另一个不行呢?我用了曲折的方法debugging得到结论:function disablenumber() { debugger; //先取
阅读全文
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Xrm.Sdk.Client;using Microsoft.Xrm.Sdk;using Microsoft.Xrm.Sdk.Query;using Microsoft.Xrm.Sdk.Messages;using Microsoft.Xrm.Sdk.Metadata;namespace MyNameSpace{ public class CrmService { priva...
阅读全文
摘要:请看这篇文章,按照他一步一步做,并根据自己的要求做些修改就可以了。MSCRM 2011: Filtered Lookup for "Add Existing..." Button of a CRM N:N View以防万一不能访问,这里把步骤大致说一下:1. 添加Javascript Webresource,不用添加到CRM的表内: function addExistingFromSubGridCustom(params) { var relName = params.gridControl.getParameter("relName"), ...
阅读全文
摘要:我们知道Dynamics CRM2011新的功能中多了一个Ribbon, 也就是所谓的“功能区”。Ribbon上面的Button的大小和顺序如何控制呢?TemplateAlias属性控制图标的大小及顺序,其优先级大于Sequence。先按照o1,o2,o3排,再按照Sequence排。o1是大图标,并且位于o2之前;o2是小图标;o3在o1,o2之后;ISV永远在最后。注意:Sequence必须是唯一的,否则,后者将不可见。
阅读全文
摘要:CRM2011有一个新特性: field sercurity, 可以做到隐藏密码的目的,但是——对管理员无效。一般来说,如果是密码,不管是谁,输入的时候,应该只看到“*****”这样的。在CRM2011里似乎没有办法可以达到这个目的。于是乎我用了一个比较曲折的方法来实现。在Form onload事件中加入并调用“HidePassword()”;在Form onSave时间中调用“SetNewPassword()”。 1 var pwd; 2 function HidePassword() 3 { 4 crmForm.all.arw_password.style.display = "
阅读全文
摘要:如果是要取得Lookup的objecttypecode:CRM4.0:crmForm.all.{field id}.DataValue[0].typeCRM2011:Xrm.Page.getAttribute(“{field id}”).getValue()[0].type如果是要取得Form的objecttypecode:CRM4.0:crmForm.ObjectTypeCodeCRM2011:Xrm.Page.context.getQueryStringParameters().etc //这是一种曲折的方法,通过querystring的参数来拿。*CRM2011也可以用4.0的方法。只是
阅读全文
摘要:编辑Ribbon是一个繁琐的工作,看着XML代码,还要知道Button所在的位置,有时候不得不去查找SDK里原始的Application Ribbon的代码来确定它所在的位置。但是,有了这个可视化编辑工具,这一切都变得轻松愉快,甚至编辑好后,只要点一下Save,就可以自动import和publish,方便极了。注意:系统的Button不可以编辑。如需要编辑系统的Button,还是要手动修改XML。下载地址:http://crmvisualribbonedit.codeplex.com/
阅读全文


浙公网安备 33010602011771号