【发布时间】:2017-09-21 12:08:46
【问题描述】:
背景
-
我在 Dynamics 365 中创建了一个名为
new_statecode的自定义字段。 -
我正在使用 HTML 网络资源从用户那里获取输入,稍后我打算将其传递给上面提到的自定义字段。
<input id="statecode" type="text" placeholder=""> -
我已经编写了一个Java脚本来获取用户输入的值并在自定义字段中设置值。
这是脚本的代码。
document.getElementById("submitButton").addEventListener("click", function (event) {
var strstatecode = document.getElementById("statecode").value;
window.parent.Xrm.Page.data.entity.attributes.get("new_statecode").setValue(strstatecode);
});
问题
这是我在控制台中遇到的错误。
Unable to get property 'setValue' of undefined or null reference
我在尝试使用 getValue 属性时也遇到了类似的错误。
显然这是一个非常常见的问题,但其他解决方案都不适合我。
到目前为止我做了什么
-
我已经检查了自定义字段名称。没有错字或拼写错误。
-
我尝试过使用
window.parent.Xrm.Page.getAttribute("new_statecode").setValue(strstatecode); -
我尝试创建一个新的自定义字段并尝试为其设置值。那也没有用。它给出了同样的错误。
注意1: 我认为值得一提的是,我发布的代码已经过编辑和缩短,以符合 SO 的mcve 标准。我的 HTML 网络资源中有 6 个其他输入(街道地址、城市等),我成功地将数据保存到 CRM 中的相应字段。唯一的区别是这些不是自定义字段。
注意2:我使用的是 Dynamics 365 版本 1612 (8.2.1.410)。
我该如何解决这个问题?还有什么我应该看的吗?也许我在创建自定义字段时应该注意什么?
请原谅我缺乏 CRM 术语知识。
【问题讨论】:
-
您的网络资源中是否包含
<script src="ClientGlobalContext.js.aspx" type="text/javascript"></script>?另外,作为测试,如果您从常规表单 JavaScript 库而不是 Web 资源将值分配给自定义字段,会发生什么情况? -
TBH 我没有。但是现在我已经包含了它,点击保存然后发布(我这样做对吗?)。还是没有变化。同样的错误
-
是的,更新后,保存并发布即可激活。当然你也必须刷新浏览器,作为一个额外的措施,你可以在某些浏览器中使用 CTRL-F5 在没有缓存的情况下刷新,或者清空缓存,然后刷新。
-
让我试试
-
@Aron 只是一个观察。我以前就注意到了这一点。
<head>标签用空标签和<meta>和<style> 标签填充。这是正常行为吗?此外,<script src="ClientGlobalContext.js.aspx" type="text/javascript"></script>不再存在。但我确信我在进行更改后保存并发布了。
标签: javascript dynamics-crm dynamics-crm-365