Version 'current' as of 2015-12-05
Apparently, the source grid can now be retrieved via e.sender.table.context.id
. Thanks, Akbari!
KendoUI 2014.1.318
Solution below won't work. It seems that table
member is missing from data source.
My workaround was quite crude, just using selectors to grab all k-grid
elements which return not-null for .data("kendoGrid")
and compare the data sources with arg.sender
. When the data sources match - we have a grid which raised the error:
$(".k-grid").each(function() {
var grid = $(this).data("kendoGrid");
if (grid !== null && grid.dataSource == args.sender) {
// We have a winner!
}
});
Original answer
Turns out - after browsing the Internet for quite a bit - that it is possible.
So here it goes, for anyone searching for the answer sometime in the future, maybe even future-me.
Inside the function, this
is not bound to a grid, but to a DataSource
that the grid uses internally, so it can't really be used directly to alter the error-handling behavior. A little bit of poorly documented magic is needed.
It means that (as of Kendo UI MVC version 2013.3.1119.545) the following can be used:
e.sender.options.table.context
to return the wrapping grid (DOM element), while
e.sender.options.table.context.id
returns grid's ID.
It means that, with jQuery, the grid can be retrieved by:
var grid = $(e.sender.options.table.context).data("kendoGrid");
And the rest of the error-handling script remains exactly the same.
Technically, both this
bound in the scope and sender
seem to be the same thing - grid's DataSource
, so they should be interchangeable in the example above.