У меня есть сетка кендо, которая позволяет пользователю добавлять новую строку, а рядом с сеткой есть две кнопки (вверх и вниз) для изменения порядка следования строк внутри. После этого пользователю нужно будет нажать кнопку «Сохранить», чтобы сохранить данные на сервере.
Изменение порядка работает нормально до сохранения, после нажатия кнопки «Сохранить» и повторного изменения порядка строки будет выдана ошибка Исключение DOM: NOT_FOUND_ERR (8). Я действительно не знаю, как это решить.
Это мой код для повторного заказа:
$("#btnMoveUp").on("click", function (e) {
var grid = $("#field-grid").data("kendoGrid");
var select = grid.select();
var selectedItem = select.closest("tr");
if (selectedItem.length > 0) {
var selectedUid = selectedItem.attr("data-uid");
var itemIndex = selectedItem.index();
var dataItem = grid.dataItem(selectedItem);
var newIndex = itemIndex - 1;
var content = $(".k-grid-content");
var offset = selectedItem.offset().top;
if (newIndex <= 0) {
newIndex = 0;
}
grid.dataSource.remove(dataItem);
grid.dataSource.insert(newIndex, dataItem);
grid.select("[data-uid = " + selectedUid + "]");
//content.scrollTop(offset);
} else {
alert("Please select the row to change the sequence of field.");
}
});
$("#btnMoveDown").on("click", function (e) {
var grid = $("#field-grid").data("kendoGrid");
var select = grid.select();
var selectedItem = select.closest("tr");
if (selectedItem.length > 0) {
var selectedUid = selectedItem.attr("data-uid");
var itemIndex = selectedItem.index();
var dataItem = grid.dataItem(selectedItem);
var newIndex = itemIndex + 1;
var content = $(".k-grid-content");
var offset = selectedItem.offset().top;
if (newIndex < grid.dataSource.view().length) {
grid.dataSource.remove(dataItem);
grid.dataSource.insert(newIndex, dataItem);
grid.select("[data-uid = " + selectedUid + "]");
//content.scrollTop(offset);
}
} else {
alert("Please select the row to change the sequence of field.");
}
});
Мой код для объявления сетки:
var fieldGrid = $("#field-grid").kendoGrid({
height: 320,
dataSource: fieldDataSource,
selectable: "row",
scrollable: true,
toolbar: [{
template: ...
}],
columns: [...],
editable: { mode: "inline", "createAt": "bottom", confirmation: false }
}).data("kendoGrid");
@gardarvalur да .. я использую встроенное редактирование ..



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


Возможно, у вас есть объявление о сетке? (Было бы полезно увидеть код сетки). Вы используете встроенное редактирование?