当没有数据更改时,Dynamics CRM 2011 在关闭时显示未保存的数据弹出窗口

Dynamics CRM 2011 shows unsaved data pop-up on close when no data has changed

在我们的 Dynamics CRM 2001 网站上,我遇到了一个奇怪的问题。当我打开一条记录然后在不修改任何内容的情况下将其关闭时,我会收到一个弹出窗口,提示我有未保存的更改,即使没有任何更改。我该如何解决这个问题?

首先要注意的是,当一个字段被标记为 "dirty" 时会显示弹出窗口,换句话说,当它在表单上显示的值不等于检索到的值时.有时,此问题只是表单显示修剪查找字段中的空格的简单问题。例如,查找字段名为 "Test "(注意空格)。在表单中显示时,此值有时会被修剪为 "Test",这会导致值不同并因此标记为脏值。换行符也会出现同样的问题。

幸运的是,很容易找出哪些字段被标记为脏。首先,转到表单的定义页面。在那里,打开表单属性页面,您会在其中找到正在加载的 JavaScript 库。使用以下内容创建一个新库:

function find_dirty_fields_on_save() { console.log(Xrm.Page.data.entity.getDataXml()); }

然后select OnSave 事件并向我们新添加的find_dirty_fields_on_save() 函数添加事件处理程序。

现在保存表格并发布它。

最后一步是转到有弹出问题的记录。打开记录的页面并打开一个开发者控制台,您可以在其中查看 console.log 命令的输出。在记录页面上什么都不做,然后单击保存按钮。此时,我们的自定义函数被调用,它将记录(如 XML)将被保存的字段。由于只保存了脏字段,您现在可以在开发者控制台中找到它们。