我可以将javascript函数绑定到不带任何参数的事件,并以此接收事件对象:
columns.Command(command => command.Custom("Edit").Click("editDetails")).Width(1);
然后editDetails
如下:
function editDetails(e)
{
e.preventDefault();
//code goes here
}
如果我不需要任何参数,并且获得了事件对象e
,可以在需要时使用它。
如果我使用这样的匿名函数,我也可以传入参数:
.Events(e => e.DataBound("function() { onGridDataBound('#MyGrid') }"))
onGridDataBound
看起来像这样:
function onGridDataBound(gridId)
{
//code goes here
}
我还无法弄清楚如何传递参数并仍然接收事件对象。
例如,如何修改Events语句,使其同时发送gridId和event对象?
这样,我可以做类似的事情:
function onGridDataBound(e, gridID)
{
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest('tr'));
var grid = $(gridID).data('kendoGrid');
}
答案 0 :(得分:0)
您可以尝试使用匿名函数来调用事件处理程序。
<div id="grid"></div>
<script>
$("#grid").kendoGrid({
columns: [
{ field: "name" },
{ command: [{
name: "Details",
click: function(e) {
// prevent page scroll position change
e.preventDefault();
detailClick(e, this, "Detail Clicked")
}
}]
}
],
dataSource: [ { id:1, name: "Jane Doe" },
{ id:2, name: "John Doe" },]
});
function detailClick(e, grid, msg){
// e.target is the DOM element representing the button
var tr = $(e.target).closest("tr"); // get the current table row (tr)
// get the data bound to the current table row
var data = grid.dataItem(tr);
console.log("Details for: "+ data.id+" "+ data.name);
console.log(msg);
}
</script>