本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复266或者20171105可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。
案例实体(逻辑名称incident)是Dynamics 365服务模块最重要的实体,没有之一。当我们在定制案例实体的时候,发现添加视图的时候无法将起源列(逻辑名称caseorigincode)添加显示,截图为证。
但是如果你添加的是公共视图,是可以添加到起源列的,如图:
这是神马情况?为什么这个列不让我添加进显示呢?我也不知道,向微软技术支持中心求助,找到了解决办法。
添加个人视图的时候有些东西是有了的,比如默认显示的列,应该是以实体中querytype等于1且isdefault等于true的那个公共视图为模板来生成的,我用Web API来查看:https://demo.luoyong.me/api/data/v8.2/savedqueries?$filter=returnedtypecode eq 'incident' and isdefault eq true and querytype eq 1。默认返回的格式不好看,如下:
使用Chrome浏览器按F12出来开发者工具,点击Network这个Tabpage,点击这个请求,看Preview这个TabPage,能看到返回Json数据的元素及其值。
可以看到这个视图的layoutxml字段的值是:<grid name="resultset" object="112" jump="title" select="1" icon="1" preview="1"><row name="result" id="incidentid"><cell name="title" width="300" /><cell name="ticketnumber" width="150" /><cell name="createdon" width="150" /><cell name="caseorigincode" width="100" ishidden="1" /></row></grid> 。
可以看到这个XML中name为caseorigincode的cell多了一个ishidden属性,且其值为1,也就是隐藏的意思。那如果把我这个属性值设置为false呢。因为这个是系统原生视图,在不同的环境中其savedqueryid都是一样的,都是00000000-0000-0000-00AA-000000666200,那我用如下的代码来更新下,当然更新后还需要发布案例这个实体才行。
ClientCredentials cc = new ClientCredentials(); cc.UserName.UserName = @"crmadmin@luoyong.me"; cc.UserName.Password = "*********"; using (OrganizationServiceProxy orgSvc = new OrganizationServiceProxy(new Uri("https://demo.luoyong.me/XRMServices/2011/Organization.svc"), null, cc, null)) { var savedQuery = orgSvc.Retrieve("savedquery", Guid.Parse("00000000-0000-0000-00AA-000000666200"), new ColumnSet("layoutxml")); savedQuery["layoutxml"] = savedQuery.GetAttributeValue<string>("layoutxml").Replace("ishidden="1"", "ishidden="0""); orgSvc.Update(savedQuery); }
这个时候再次创建个人视图,发现起源列已经显示了,如图:
显示的效果如下:
当然,除了本办法,还有就是根据现有显示起源列的公共视图来创建视图,也可以显示起源列,哪些公共视图显示了起源列呢,我用Web API来查看:https://demo.luoyong.me/api/data/v8.2/savedqueries?$filter=contains(fetchxml,'caseorigincode') and not contains(layoutxml,'ishidden') 。可以看到 我的可用案例 等13个公共视图是显示这个列的。