2013-10-10 45 views
4

我想要获得Kendo网格的点击事件,这样我就可以绑定东西来移动并按住Ctrl键。我无法使用Kendo提供的固有多选,因为它不支持拖放操作。当我在dataBound事件之后创建一个函数时,我的函数在点击时被调用,但它不是典型的点击事件。获取剑道网格中的点击事件

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

grid.dataBound = onDataBound; 

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

有什么想法?提前致谢。

回答

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用于检测是否按下移位

如果希望只在表体内检测到点击,您可以通过"tbody"甚至"td"更换"table"

Jsfiddle example

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是,你可以通过在你的绑定数据项。

+1

非常感谢!这正是我为我的项目所需要的,对于未来的开发人员来说,它是清晰可读的。 – t1nr2y