Три вопроса:
Если вы итерацию grid.dataSource.view()
вы найдете только те элементы, которые находятся в текущей странице сетки. Если вы хотите выполнить итерацию по всем элементам таблицы, вместо этого вы можете использовать grid.dataSource.data()
.
Итерируя, вам не нужно указывать select
строку, поскольку у вас уже есть информация в вашей функции. Например, если вы:
$.each(grid.dataSource.view(), function(idx, elem) {
console.log("item with index " + idx + " is ", elem);
})
затем elem
это элемент в ряду 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]);
}
}
Я могу определить условие, чтобы найти отмеченные флажки. Я попытался, если ($ ("# GridUploadstaffIDs1"). Find ("input: checked")), но это становится истинным для всех строк. Как действовать сейчас? – Manikandan
Мне нужно будет увидеть ваш код, чтобы узнать, что не так **, но **, тогда у вас будет проблема с тем, что вы удалите строки, начиная с конца. Почему бы не зациклиться на элементах данных? Поскольку это чистый JavaScript и не требует jQuery, он, скорее всего, будет намного быстрее! – OnaBai
Это часть кода, которая удаляет проверенные строки. var grid = $ ('# GridUploadstaffIDs1'). data ("kendoGrid"); var array = grid.dataSource.data(); var len = array.length; while (len--) {if ($ ("# GridUploadstaffIDs1"). find ('input: checked')) {grid.dataSource.remove (array [len]); }} – Manikandan