I'm trying to get the click event for a Kendo Grid so I can bind stuff to shift and ctrl clicking. I can't use the inherent multiselect Kendo provides because it doesn't support drag and drop. When I create a function after the dataBound event, my function gets called on clicking, but it's not the typical click event.
var onDataBound = function () {
selectItem.apply(this);
}
grid.dataBound = onDataBound;
var selectItem.apply = function (e) {
console.log(e);
}
Any thoughts? Thanks in advance.
After initializing the Grid
you should bind a handler to the click event.
Example:
$("#grid").on("click", "table", function(e) {
console.log("clicked", e.ctrlKey, e.altKey, e.shiftKey);
});
You can use:
e.ctrlKey
for detecting if ctrl is pressed.e.altKey
for detecting if alt is pressed.e.shiftKey
for detecting if shift is pressed.If you want to detect click only in the body of the table, you can replace "table"
by "tbody"
or even "td"
.
Jsfiddle example.
Use dataBound
event when declaring the grid:
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
is your bound data item that you can pass around.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With