我对复合属性的主题有疑问,如果你能帮助我,我将不胜感激。 我之前在其他问题博客上发布了这个,但没有得到任何回复我很满意。
我正在编写JavaScript,它将更新复合(address1_composite)中的字段(即address1_line1,address1_line2,address1_line3,address1_city,address1_stateorprovince,address1_postalcode,address1_country)。更新字段后,复合似乎不会更新。我必须打开复合材料并再次关闭它。有没有办法在JavaScript中自动执行此操作?
我尝试了以下想法:
创意1:
Xrm.Page.data.entity.save();
建议http://community.dynamics.com/crm/b/magnetismsolutionscrmblog/archive/2013/10/22/working-with-dynamics-crm-2013-composite-fields-fly-out-menu.aspx 这没有任何好处,因为我的客户希望在保存页面之前查看复合材料。此外,我不想为我的客户保存页面,因为他们不想要这个。他们想自己决定何时这样做。
创意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中单击复合完成按钮,那将会是多么美妙。这将为我提供完成按钮的格式和我需要的自动化。
更新 - 2014年4月14日 自发布此问题以来,我一直与Microsoft联系,他们说没有支持的方式通过程序点击完成按钮。
答案 0 :(得分:1)
如果字段被锁定,CRM JavaScript不会将数据发送回服务器进行更新。另一种方法是:
plugin
事件中使用服务器端Update
,以便保留值。