javascript - Kendo Grid.dataItem 循环不工作

标签 javascript loops kendo-ui kendo-grid dataitem

所以我的目标是循环遍历我的剑道网格中的所有选定项目,但在第一次迭代之后,dataItem 方法返回未定义。

function myFunction() {
var selectedItem = $("#DropDown").val();
var grid = $("#Grid").getKendoGrid();
var selectedItems = grid.select();
for (var i = 0; i < selectedItems.length; i++) {
    var dataItem = grid.dataItem(selectedItems[i]);
    if (dataItem != undefined)
        dataItem.set("Item", SelectedItem);
}
}

有谁知道为什么会这样?

最佳答案

发生这种情况是因为 set() 在后台执行网格刷新,因此重新创建了 DOM。您拥有的包含所选项目的数组丢失了。您不能依赖 tr 的引用。作为建议,我认为您可以改用它们的索引:

function myFunction() {
    var selectedItem = $("#DropDown").val();
    var grid = $("#Grid").getKendoGrid();
    var selectedItems = grid.select().toArray().map((item) => { return $(item).index(); });

    for (var i = 0; i < selectedItems.length; i++) {
        var currentItem = grid.tbody.find(`tr:eq(${selectedItems[i]})`);
        var dataItem = grid.dataItem(currentItem );
        if (dataItem != undefined)
            dataItem.set("Item", SelectedItem);
    }
}
  • var selectedItems = grid.select().toArray().map((item) => { return $(item).index(); });

    此行从选定的网格行获取索引数组以进一步迭代;

  • var currentItem = grid.tbody.find(`tr:eq(${selectedItems[i]})`);

    此行通过索引检索选定的行。

Demo

关于javascript - Kendo Grid.dataItem 循环不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51523299/

相关文章:

javascript - 如何将 Javascript ID 值传递到 window.location.href

javascript - javascript 脚本中的 youtube-dl 错误

C - 使用 while 和 switch/case 的菜单程序返回具有无效选择的重复菜单

java - 为什么我的 if else 语句不执行?

php - 如何用 PHP 执行多个 mysql 查询

javascript - 使用网格 ID 隐藏剑道网格工具栏

javascript - Kendo 中的过滤工具提示

Javascript:如何在没有特定用户事件的情况下复制到剪贴板

javascript - 失败的 JS Mandelbrot Set 生成器输出奇数结构

mvvm - Kendo MVVM 数据绑定(bind)与自定义 Kendo 小部件