У меня есть сценарий, в котором пользователь может выбрать несколько ячеек в сетке. Я хотел бы подтвердить выбор пользователей и отменить выбор любых недопустимых ячеек. Я пытаюсь добиться этого в функции изменения в моей сетке. Мой текущий подход состоит в том, чтобы получить выбранные в данный момент ячейки, определить, какие ячейки действительны, и выбрать список допустимых ячеек, которые я нашел.
Согласно документации Kendo, функция grid.select() принимает параметр, но в качестве параметра принимает только массив строк. Это объясняет, почему приведенное ниже не работает.
Мне нужно решение, которое позволяет мне установить, какие ячейки выделены, а также получить выделенные ячейки (в настоящее время я могу получить выбранные ячейки с помощью метода grid.select()).
Есть ли разумный способ сделать это?
$scope.myKendoGridOptions = {
selectable: "multiple, cell",
change: function (e) {
if (!$scope.jsSelectChangeEvent) {
var grid = $('#myKendoGrid').data("kendoGrid");
var selectedItems = grid.select();
if (selectedItems.length > 1) {
var validItems = [];
var validRowIndex = selectedItems[0].closest("tr").rowIndex;
for (var i = 0; i < selectedItems.length; i++) {
if (selectedItems[i].closest("tr").rowIndex === validRowIndex) {
validItems.push(selectedItems[i]);
}
}
//Avoids Infinite loop
$scope.jsSelectChangeEvent = true;
//im expecting this to select my valid cells, but it has no effect
grid.select(validItems);
}
} else {
$scope.jsSelectChangeEvent = false;
}
}
};



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


grid.select(validItems) принимает ячейки в качестве параметра. Проблема в том, что мне нужно вызвать grid.clearSelect() перед вызовом grid.select, чтобы получить желаемый эффект.