Kendo Grid.dataItem 循环不工作
Kendo Grid.dataItem loop not working
所以我的目标是循环遍历我的 kendo 网格中的所有选定项目,但在第一次迭代之后,dataItem 方法 returns 未定义。
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]})`);
此行通过索引检索选定的行。
所以我的目标是循环遍历我的 kendo 网格中的所有选定项目,但在第一次迭代之后,dataItem 方法 returns 未定义。
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]})`);
此行通过索引检索选定的行。