Dynamics crm 2013年MSCRM中的复合字段
我有一个关于复合属性的问题,如果您能帮助我,我将不胜感激。 我以前在其他问题博客上发表过这篇文章,但没有得到我满意的回复 我正在编写JavaScript来更新复合(address1\u复合)中的字段(即address1\u line1、address1\u line2、address1\u line3、address1\u city、address1\u stateorprovince、address1\u postalcode、address1\u country)。当字段更新时,组合似乎不会更新。我必须打开复合材料,然后再把它合上。有没有一种方法可以在JavaScript中自动执行此操作 我尝试过以下想法: 想法1:Dynamics crm 2013年MSCRM中的复合字段,dynamics-crm,dynamics-crm-2013,Dynamics Crm,Dynamics Crm 2013,我有一个关于复合属性的问题,如果您能帮助我,我将不胜感激。 我以前在其他问题博客上发表过这篇文章,但没有得到我满意的回复 我正在编写JavaScript来更新复合(address1\u复合)中的字段(即address1\u line1、address1\u line2、address1\u line3、address1\u city、address1\u stateorprovince、address1\u postalcode、address1\u country)。当字段更新时,组合似乎不会
Xrm.Page.data.entity.save();
这是建议在
这一点都不好,因为我的客户希望在保存页面之前查看组合。另外,我不想为我的客户保存页面,因为他们不希望这样。他们希望自己决定何时这样做
想法2:
Xrm.Page.data.refresh();
这不是我真正想要的,因为我不想刷新整个页面。我只想刷新合成图。它还会弹出一个弹出窗口,警告您没有保存页面,这会让我的客户感到恼火
想法3:
将地址从地址行写入组合。
这感觉像是一个讨厌的黑客。
这样做的方法可能不止一种。我使用了这个函数
Xrm.Page.getAttribute("address1_composite")._attribute.setValueForCompositeField();
我不喜欢这样,原因如下:
Xrm.Page.data.entity.attributes.get("address1_composite").controls.get(0).setFocus();
这是迄今为止最好的想法,但还远远不够完美。这将强制用户按下“完成”按钮,因此字段将被写入。我希望有更自动化的东西
我的问题:
如果有一种方法可以在JavaScript中单击composite done按钮,那就太好了。这将为我提供“完成”按钮的格式和所需的自动化功能。
更新-2014年4月14日
发布此问题后,我一直与Microsoft联系,他们说没有支持的方法通过程序单击“完成”按钮。如果字段被锁定,CRM JavaScript不会将数据发送回服务器进行更新。另一种办法是:
更新
事件上使用服务器端插件
,以便保留该值我想我会对这个问题发表评论。我有同样的问题(截至2014年4月9日ddmmyy)。复合属性更新似乎与确认或单击弹出编辑框的操作相关联。我曾期望,只要一个相关属性发生更改(即使使用fireOnChange,而不仅仅是手动更改),复合控件就会更新。2014年4月14日发布此问题后,我一直与微软联系,他们说没有支持的方式通过程序单击“完成”按钮。我已经在上面问题的主体部分添加了这个。你决定了什么?我猜是这个
另一个想法是在对组合中的任何字段进行更改后,将焦点设置到组合字段。Xrm.Page.data.entity.attributes.get(“address1_composite”).controls.get(0.setFocus();这是迄今为止最好的想法,但还远远不够完美。这将强制用户按下“完成”按钮,因此字段将被写入。我希望有更自动化的东西。@Oly如果您还没有找到解决方案,请告诉我。我有一个,你好。谢谢你。然而,这将有与上述想法1相同的问题。客户需要能够在将组合保存回服务器之前检查它。在这种情况下,您只能使用定制Javascript。