javascript - 从错误处理程序内部获取对 Kendo Grid 的引用

标签 javascript asp.net-mvc kendo-ui kendo-grid kendo-asp.net-mvc

已经有 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)的 thissender 似乎是同一件事 - 网格的 DataSource,因此它们应该可以互换上面的例子。

关于javascript - 从错误处理程序内部获取对 Kendo Grid 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20886651/

相关文章:

javascript - JS矩阵乘法问题

css - 根据条件在 Table <tr> 之间添加空格

c# - IEnumerable 到 IList 的转换(Dapper 返回结果)

c# - 为什么我的 MvcHtmlString 内容被转义了?

javascript - 如何动态设置分类轴标题?

javascript - 是否可以将唯一的 CSS 类附加到多个 <li> 元素,或使用 Jquery 对它们重新排序?

javascript - HTML5 地理定位问题

javascript - 计算元素尺寸以适合容器内部

javascript - Kendo UI 网格聚合 "sum"不工作

javascript - 更新 Kendo 网格中绑定(bind)到本地数据的基础对象