在保存操作之前获取记录的指南

时间:2013-01-09 23:56:18

标签: javascript dynamics-crm-2011 crm

我需要使用记录的GUID。如果记录是旧的,我可以使用

访问guid
Xrm.Page.data.entity.getId();

问题是我需要在保存新记录的同一时刻使用ID。

我尝试保存记录,重新加载页面,然后使用带

的id
parent.Xrm.Page.data.entity.save();
window.location.reload(true);
var currentCaseId = Xrm.Page.data.entity.getId();

但它不起作用。

编辑:我改变了我的代码,所以现在我可以在onLoad事件中获取ID但现在我的问题是,如果用户选择“保存”,我只能获得GUID(导致“保存”按钮刷新页面)。如果用户选择“保存并关闭”或“保存并且新建”,则记录不会刷新,因此onLoad事件不会发生,我无法获取GUID。

4 个答案:

答案 0 :(得分:1)

实际创建实例时,首先会获得实例的 guid 。因此,您需要在服务器使用 guid 返回给您之前实际执行保存操作。

如果您需要在实体保存之前(或者可能在保存之后但在回发到客户端之前)对实体执行某些操作,您可能希望使用插件拦截操作。

最佳方法取决于实际需要,这取决于您首先尝试访问 guid 的原因。你打算用“早期 guid ”打算做什么?

是否必须使用JavaScript?

答案 1 :(得分:1)

如果您在crm中创建记录,则主键由crm创建并返回给您。您可以自己创建一个guid并在保存之前进行分配。现在你知道了正手击键。

答案 2 :(得分:1)

如果记录处于创建模式,我使用JavaScript和XrmServiceToolkit创建具有所有可能属性的新记录。这为我提供了后台其他操作所需的GUID。然后我阻止保存原始表单并在同一窗口中打开新创建的记录。它看起来与常规保存完全相同,但它可以实现您想要的效果。

答案 3 :(得分:-1)

我有类似的问题。这可能不是行业最佳实践,但它可行:我在用户有机会保存(并关闭或保存并重新启动)之前进行自动保存(Xrm.Page.data.entity.save();)。用户输入所有必填字段后,我进行自动保存。然后在onload-event上生成并使用Guid。