【发布时间】:2014-01-17 11:41:44
【问题描述】:
我的 MVC 应用程序中有一个可选择的 KendoUI 网格。当用户双击网格时,我想做一些事情。
我没有看到网格的双击事件。
没有暴露的双击事件如何处理?
【问题讨论】:
标签: javascript jquery kendo-ui kendo-grid kendo-asp.net-mvc
我的 MVC 应用程序中有一个可选择的 KendoUI 网格。当用户双击网格时,我想做一些事情。
我没有看到网格的双击事件。
没有暴露的双击事件如何处理?
【问题讨论】:
标签: javascript jquery kendo-ui kendo-grid kendo-asp.net-mvc
使用标准的双击事件。第一次点击会选中网格行,为其添加.k-state-selected类,第二次点击会触发双击事件。
$("#yourgridname").on("dblclick", "tr.k-state-selected", function () {
// insert code here
});
【讨论】:
你也可以使用dataBound
dataBound: function (e) {
var grid = this;
grid.tbody.find("tr").dblclick(function (e) {
var dataItem = grid.dataItem(this);
...
});
}
来自http://www.telerik.com/forums/double-click-on-grid-row-with-angular
【讨论】:
const grid = e.sender;。
tr 元素添加一个事件处理程序。所以如果你有一千行,你最终会得到一千个事件处理程序。最好使用委托事件处理程序而不是直接绑定的事件处理程序。
使用kendoHelpers 可以获得该行的dataItem。 https://github.com/salarcode/kendoHelpers
kendoHelpers.grid.eventRowDoubleClick (theGrid,
function(dataItem){
// do stuff with dataItem
});
它还有eventCellDoubleClick,它适用于单元格。
【讨论】:
这是另一种处理方式:
var grid = $('#myGrid').kendoGrid({
columnMenu: true,
filterable: true,
selectable: true,
// and many more configuration stuff...
}).data('kendoGrid');
grid.tbody.delegate('tr', 'dblclick', function() {
var dataItem = grid.dataItem($(this));
// do whatever you like with the row data...
});
自 v3.0 起,delegate 已被弃用。你可以使用on,像这样:
grid.tbody.on('dblclick', 'tr', function() {
var dataItem = grid.dataItem($(this));
// do whatever you like with the row data...
});
【讨论】:
dblclick(function (e) {...}); 事件处理程序在编辑一行后失败(内联)。