三个问题:
如果您进行迭代grid.dataSource.view()
,您将只找到网格当前页面中的那些元素。如果要遍历表的所有元素,则可以grid.dataSource.data()
改用。
迭代你不需要select
一行,因为你的函数中已经有了信息。例如,如果你这样做:
$.each(grid.dataSource.view(), function(idx, elem) {
console.log("item with index " + idx + " is ", elem);
})
然后elem
是 row 上的项目idx
。
最后但并非最不重要的一点是,当您从头开始迭代数组时,您无法删除元素,因为有两个连续的元素要删除,您将删除第一个,然后递增计数器以继续下一个但然后第二个实际上现在位于第一个的位置,因此将被跳过。
示例:如果您有以下代码:
var array = [3, 2, 1, 5, 6, 4];
console.log("before", array);
$.each(array, function(idx, elem) {
if (elem >= 5) {
array.splice(idx, 1);
}
});
console.log("after", array);
它将显示:
before [3, 2, 1, 5, 6, 4]
after [3, 2, 1, 6, 4]
6
没有删除有值的元素!!!
相反,您应该从头开始:
var array = [3, 2, 1, 5, 6, 4];
console.log("before", array);
var len = array.length;
while (len--) {
if (array[len] >= 5) {
array.splice(len, 1);
}
}
console.log("after", array);
结果:
before [3, 2, 1, 5, 6, 4]
after [3, 2, 1, 4]
所以,你的代码应该是:
var array = grid.dataSource.data();
var len = array.length;
while (len--) {
if (...) { // the condition for checking if the item has the checkbox ticked
grid.dataSource.remove(array[len]);
}
}