在剑道网格中获取点击事件
Posted
技术标签:
【中文标题】在剑道网格中获取点击事件【英文标题】:getting the click event in a kendo grid 【发布时间】:2013-10-18 17:44:51 【问题描述】:我正在尝试获取 Kendo Grid 的单击事件,以便我可以将内容绑定到 shift 和 ctrl 单击。我不能使用 Kendo 提供的固有多选,因为它不支持拖放。当我在 dataBound 事件之后创建一个函数时,我的函数会在点击时被调用,但这不是典型的点击事件。
var onDataBound = function ()
selectItem.apply(this);
grid.dataBound = onDataBound;
var selectItem.apply = function (e)
console.log(e);
有什么想法吗?提前致谢。
【问题讨论】:
【参考方案1】:在初始化Grid
之后,您应该将处理程序绑定到点击事件。
例子:
$("#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.
【讨论】:
【参考方案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
是您可以传递的绑定数据项。
【讨论】:
非常感谢!这是我的项目所需要的,并且对于未来的开发人员来说清晰易读。【参考方案3】:我知道这已经很老了,但我相信没有一个解决方案涵盖了事件也被应用于表头的事实。例如,如果您有表格过滤器(按升序/降序排序),这可能会导致问题。添加点击事件的正确方法是针对表体,如下:
$("#grid tbody").find("tr").click(addYourFunctionHere);
【讨论】:
【参考方案4】:如果您只想停止传播,只需调用 event.stopPropagation() 或 event.stopImmediatePropagation();
function onRowDelete(dataItem)
event.stopImmediatePropagation();
showConfirmation(dataItem);
【讨论】:
以上是关于在剑道网格中获取点击事件的主要内容,如果未能解决你的问题,请参考以下文章
将 onclick/ng-click 事件附加到网格数据绑定事件中的元素