已经有 questions how to get custom error handling, with answers ,但是所有这些答案都使用网格的“外部”引用/选择器来使其工作,例如:
function onError(e) {
if (e.errors) {
var message = "Error:\n";
var grid = $('#gridID').data('kendoGrid'); // <<- here
(...)
}
是否可以从错误处理函数内部获取对网格的引用,而无需手动或“外部”提供选择器(因为全局变量是meh)?这样错误处理脚本就可以完全独立。
最佳答案
截至 2015-12-05 的“当前”版本
显然,现在可以通过 e.sender.table.context.id
检索源网格。谢谢,Akbari !
剑道UI 2014.1.318
以下解决方案无效。数据源中似乎缺少 table
成员。
我的解决方法非常粗糙,只是使用选择器获取所有 k-grid
元素,这些元素为 .data("kendoGrid")
返回 not-null 并比较数据带有 arg.sender
的来源。当数据源匹配时 - 我们有一个引发错误的网格:
$(".k-grid").each(function() {
var grid = $(this).data("kendoGrid");
if (grid !== null && grid.dataSource == args.sender) {
// We have a winner!
}
});
原始答案
事实证明 - 在浏览了 Internet 一段时间后 - 这是可能的。 所以就这样吧,对于任何在未来某个时候寻找答案的人,甚至可能是 future 的我。
在函数内部,this
并没有绑定(bind)到grid,而是绑定(bind)到grid内部使用的DataSource
,所以不能真正使用直接 来改变错误处理行为。需要一点记录不完整的魔法。
这意味着(从 Kendo UI MVC 版本 2013.3.1119.545 开始)可以使用以下内容:
e.sender.options.table.context
返回包装网格(DOM 元素),而
e.sender.options.table.context.id
返回网格的 ID。
这意味着,使用 jQuery,可以通过以下方式检索网格:
var grid = $(e.sender.options.table.context).data("kendoGrid");
错误处理脚本的其余部分保持完全相同。
从技术上讲,在范围内绑定(bind)的 this
和 sender
似乎是同一件事 - 网格的 DataSource
,因此它们应该可以互换上面的例子。
关于javascript - 从错误处理程序内部获取对 Kendo Grid 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20886651/