在kendo网格中获取click事件

时间:2013-10-10 19:34:41

标签: javascript jquery html kendo-ui

我试图获取Kendo Grid的点击事件,这样我就可以将内容绑定到shift和ctrl click。我无法使用固有的多选Kendo,因为它不支持拖放。当我在dataBound事件之后创建一个函数时,我的函数在点击时被调用,但它不是典型的点击事件。

var onDataBound = function () {
    selectItem.apply(this);
}

grid.dataBound = onDataBound;

var selectItem.apply = function (e) {
    console.log(e);
}

有什么想法?提前谢谢。

4 个答案:

答案 0 :(得分:8)

初始化Grid后,您应该将处理程序绑定到click事件。

示例:

$("#grid").on("click", "table", function(e) {
    console.log("clicked", e.ctrlKey, e.altKey, e.shiftKey);
});

您可以使用:

  • e.ctrlKey用于检测是否按下 ctrl
  • e.altKey用于检测是否按下 alt
  • e.shiftKey用于检测是否按下 shift

如果您只想检测表格正文中的点击次数,可以将"table"替换为"tbody"甚至"td"

Jsfiddle example

答案 1 :(得分:2)

在声明网格时使用dataBound事件:

grid = $("#grid").kendoGrid({
    ...
    ,dataBound=onDataBound
});

var onDataBound = function(e)
{
    $("#grid").find("tr").click(selectItem.apply);
};

var selectItem.apply = function (e) {
    var dataItem = $("#grid").data("kendoGrid").dataItem(this);
    if(e.ctrlKey)
       alert('Ctrl + click on ' + dataItem.column1);
}

dataItem是您可以传递的绑定数据项。

答案 2 :(得分:0)

我知道这已经很老了,但是我相信所有解决方案都不能涵盖该事件也应用于表头的事实。例如,如果您具有表过滤器(按升/降序排列),则可能会导致问题。添加click事件的正确方法是以表主体为目标,如下所示:

$("#grid tbody").find("tr").click(addYourFunctionHere);

答案 3 :(得分:0)

如果您只想停止传播,只需调用 event .stopPropagation()或 event .stopImmediatePropagation();

function onRowDelete(dataItem) {
           
    event.stopImmediatePropagation();

    showConfirmation(dataItem);        
}