Javascript 命令栏菜单
我在CRM中遇到了一个问题,错误是当我创建约会并试图保存它时,commandBar在加载创建的约会记录后不可见。我试图检查与javascript相关的代码,但没有关于问题来源的提示,我应该说,在刷新所创建页面的页面后,命令栏变为可见Javascript 命令栏菜单,javascript,dynamics-crm,dynamics-crm-2013,Javascript,Dynamics Crm,Dynamics Crm 2013,我在CRM中遇到了一个问题,错误是当我创建约会并试图保存它时,commandBar在加载创建的约会记录后不可见。我试图检查与javascript相关的代码,但没有关于问题来源的提示,我应该说,在刷新所创建页面的页面后,命令栏变为可见 OnSave: function (e) { EOZ.Appointment.SetPivotalId(); var eventArgs = e.getEventArgs(); if (Xrm.Page.ui.getFormType()
OnSave: function (e) {
EOZ.Appointment.SetPivotalId();
var eventArgs = e.getEventArgs();
if (Xrm.Page.ui.getFormType() == 1 && eventArgs.getSaveMode() == 1 && !saveAndClose) {
Xrm.Page.getAttribute("createdon").addOnChange(EOZ.Appointment.CreatedOnChanged);
}
else {
saveAndClose = true;
Xrm.Page.getAttribute("createdon").removeOnChange(EOZ.Appointment.CreatedOnChanged);
}
},
CreatedOnChanged : function () {
var id = Xrm.Page.data.entity.getId();
setTimeout(function () {
Xrm.Utility.openEntityForm("appointment", id);
}, 500);
}
注意:在大量javascript调试之后,我注意到只有在多次调用方法“CreatedOnChanged”时才会出现问题,而另一方面,如果只在命令栏可见时调用该方法,则会出现问题。我不知道这是否是bug的来源,但这是代码行为的唯一区别
编辑:
Dynamics CRM 2013,浏览器:Google chrome最新版本,2017年3月3日
我将代码修改为:
CreatedOnChanged : function () {
if(!isCalled){
var id = Xrm.Page.data.entity.getId();
setTimeout(function () {
Xrm.Utility.openEntityForm("appointment", id);
}, 500);
isCalled = true;
}
}
方法“CreatedOnChanged”被多次调用,但其内容只执行一次,并且命令栏显示正确。。。但是我真的不知道为什么当这个方法被多次执行时,命令栏会被隐藏。在我看来,你好像在试图在保存后刷新页面 与其尝试重新打开表单,我认为强制刷新可能更正确:
Xrm.Page.data.refresh(true);
我认为在OnCreate()事件上注册事件可能会导致错误。保存后功能区会自动刷新(因此可以重新测试任何可见性/启用条件或javascript)
页面上的JavaScript错误可能会导致JavaScript重新呈现功能区失败。在我看来,您在保存后试图刷新页面 与其尝试重新打开表单,我认为强制刷新可能更正确:
Xrm.Page.data.refresh(true);
我认为在OnCreate()事件上注册事件可能会导致错误。保存后功能区会自动刷新(因此可以重新测试任何可见性/启用条件或javascript)
页面上的JavaScript错误可能会导致JavaScript重新呈现功能区失败。Dynamics CRM版本?浏览器版本?当您禁用表单上的所有自定义脚本时会发生什么?B.t.w.
else
块中的代码在更新表单时执行,并且在保存模式下!=1。这是您想要的吗?要@HenkvanBoeijen,我编辑了我的问题,else代码在我按下“保存和关闭”按钮时执行,如果我禁用了所有自定义脚本,那么在创建约会活动后,命令栏会正确显示。您实际想要实现什么?我认为看到一个针对CreatedOn fiel注册的onchanged处理程序是非常罕见的d、 在@Malachy中,我添加了onchanged事件来解决microsoft的错误,它只用于重新加载创建的实体。您可以提供有关您试图解决的microsoft错误的更多信息?Dynamics CRM版本?浏览器版本?当您禁用表单上的所有自定义脚本时会发生什么?B.t.w.else
块中的代码会变为execute on update form and when save mode!=1。这是您想要的吗?为了@HenkvanBoeijen,我编辑了我的问题,当我按下“保存并关闭”按钮时,执行else代码,如果我禁用所有自定义脚本,在创建约会活动后,命令栏将正确显示。您实际想实现什么?我想在CreatedOn字段中注册onchanged处理程序是非常罕见的。在@Malachy中,我添加了onchanged事件来解决microsoft的错误,它只用于重新加载创建的实体。您是否可以提供有关您试图解决的microsoft错误的更多信息?