[英]preventing opening of record on double click in dynamics 365
我已经为我们的抽象实体设置了一个队列。 我试图阻止双击打开记录。 我已经为事件设置了一个处理程序,并在事件 object 上调用了.stopPropagation() 和.preventDefault(),它继续打开了 window。
不确定我是否遗漏了一些明显的东西或什么......这是我的代码:
function attachDoubleClick() {
var grid = document.getElementById("gridBodyTable");
if (grid == null) {
setTimeout(function () { attachDoubleClick(); }, 2000); //if the grid hasn’t loaded run this again
return;
}
function handler(e) {
var abstractId = document.getElementsByClassName("ms-crm-List-SelectedRow").item().getAttribute("oid").replace("}", "").replace("{","");
XrmSvcToolkit.retrieve({
entityName: "prod_abstract",
id: abstractId,
select: ["prod_abstractstatus"],
async: false,
successCallback: function (result) {
if (result.prod_abstractstatus.Value != 108410000) {
alert("This abstract is already being worked on or is completed.");
e.stopPropagation();
e.preventDefault();
console.log(e);
return;
}
},
errorCallback: function (error) {
console.log(error);
}
});
}
grid.ondblclick = handler;
}
问题是我需要添加第三个参数为 true 的事件监听器。 (这是 useCapture 参数。)结束代码如下所示:
function attachDoubleClick() {
var grid = document.getElementById("gridBodyTable");
if (grid == null) {
setTimeout(function () { attachDoubleClick(); }, 2000); //if the grid hasn’t loaded run this again
return;
}
grid.addEventListener("dblclick", handler, true);
}
function handler(e) {
console.log(e);
var abstractId = document.getElementsByClassName("ms-crm-List-SelectedRow").item().getAttribute("oid").replace("}", "").replace("{", "");
XrmSvcToolkit.retrieve({
entityName: "prod_abstract",
id: abstractId,
select: ["prod_abstractstatus"],
async: false,
successCallback: function (result) {
if (result.prod_abstractstatus.Value != 108410000) {
alert("This abstract is already being worked on or is completed.");
e.stopPropagation();
e.preventDefault();
return;
}
},
errorCallback: function (error) {
console.log(error);
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.