防止在动态365中双击打开记录。

问题描述 投票:0回答:1

我已经为我们的抽象实体设置了一个队列。我试图防止记录的双击打开,我为事件设置了一个处理程序,并在事件对象上调用.stopPropagation()和.preventDefault(),但它继续打开。我已经为事件设置了一个处理程序,并在事件对象上调用.stopPropagation()和.preventDefault(),但它继续打开窗口。

不知道我是不是漏掉了什么明显的东西,下面是我的代码。

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;
}


javascript dynamics-365
1个回答
0
投票

问题是我需要在addEventListener中添加第三个参数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);
        }
    });

}
© www.soinside.com 2019 - 2024. All rights reserved.