我们正在测试我们的动力CRM从2013年到2016年的升级,以了解客户关系管理升级后需要升级哪些定制。
我们有下面的Javascript We资源,我们正在使用的一个特定的案例。
function MyOnLoad()
{
var pickListValue = Xrm.Page.getAttribute("field1").getValue();
if (Xrm.Page.ui.getFormType() == 2 && pickListValue == 100000006)
{
var ddlNewField1 = document.getElementById("field1");
if (ddlNewField1.addEventListener) {
ddlNewField1.addEventListener ("change", function () {MyOnChange();}, false);
}
else {
ddlNewField1.attachEvent('onchange',MyOnChange);
}
}
}
function MyOnChange()
{
if (Xrm.Page.getAttribute("field1").getValue() == "100000006") {
Xrm.Page.getControl("field2").setVisible(false);
Xrm.Page.getAttribute("field2").setRequiredLevel("none");
}
// If the selected value is not Other, hide Specify, and set requirement to Not Required
else {
Xrm.Page.getControl("field2").setVisible(true);
Xrm.Page.getAttribute("field2").setRequiredLevel("required");
}
}此代码在我们的Dynamics 2013中运行良好,并打算执行以下操作:
当引导表单加载时,如果将FIELD1的值设置为特定值,它将显示第二个字段FIELD2并使其成为业务所需的字段。
这里棘手的部分是,只有当第一个字段在表单加载时包含该特定值时,第二个字段才是可见的。如果由于某种原因,表单加载期间第一个字段的值是不同的,则即使选择该特定值,第二个字段也不会显示。
因此,恢复:
我试着解释自己,所以我希望我清楚这个实际的javascript是干什么的。
升级后出现的问题与“addEventListener”有关:
TypeError:无法在MyOnLoad处读取null的属性“addEventListener”
我想问的是,是否有人可以帮助我们升级这个Javascript,或者是否有一条业务规则可以取代它。实际上,我尝试设置业务规则,但无法在业务规则中分离加载和更改条件。
谢谢
发布于 2018-02-07 17:42:01
不要像使用document.getElementById时那样访问DOM。用微软的话来说
JavaScript开发人员习惯于在代码中与文档对象模型(DOM)元素交互。您可以使用window.getElementById方法或jQuery库。您可以在HTML web资源中自由使用这些技术,但不支持它们访问MicrosoftDynamic365个应用程序页或实体表单中的元素。相反,对实体表单元素的访问是通过Xrm.Page对象模型公开的。MicrosoftDynamics365开发团队保留更改页面组成方式的权限,包括元素的ID值,因此使用Xrm.Page对象模型可以保护代码不受页面实现方式的更改。
在您的示例中,您可以使用支持的addOnChange:
Xrm.Page.getAttribute("field1").addOnChange(MyOnChange)https://stackoverflow.com/questions/48668491
复制相似问题