#rows #slickgrid
#строки #slickgrid
Вопрос:
Скользкая сетка очень хороша! В отключенном режиме пользователь вносит некоторые изменения. когда задание будет выполнено, изменения должны быть сохранены на сервере. Я хотел бы знать, есть ли удобный способ обновить базу данных. dataview содержит актуальные данные, известно ли ему об изменениях, произошедших с момента загрузки (например, об удаленных строках), или нам нужно самим отслеживать изменения?
Ответ №1:
Вы можете использовать событие onCellChanged или пользовательский editCommandHandler, чтобы пометить строки как загрязненные и просто выполнить вызов Ajax для обновления этих строк. Вся более сложная синхронизация зависит от вас — у SlickGrid для этого нет никаких помощников.
Ответ №2:
У меня не было проблем с использованием события onCellChanged, когда это было возможно.
Теперь я пытаюсь использовать событие onSelectedRowsChanged, чтобы получить rowid строки, подлежащей удалению.
Но grid.getSelectedRows() возвращает только номер строки на текущей странице. Итак, у меня проблема с получением идентификатора строки, когда сетка отфильтрована или не отображает первую страницу.
Я предполагаю, что есть какой-то набор данных, который управляет текущим представлением, но я не могу его найти.
Итак, каково наилучшее решение для извлечения rowid из номера строки в соответствии с текущим представлением? с уважением
Обновить:
Я, наконец, передумал, создав функцию в grid.js это возвращает rowid последней выбранной строки (не массив, позволяющий удалять только одну строку)
"getSelectedRowID": getSelectedRowID,
которые я использую следующим образом :
-> получить текущий идентификатор строки
grid.onSelectedRowsChanged = function (e, args) {
currentID = grid.getSelectedRowID();
.....
}
-> и удалите эту строку, если нажата клавиша удаления
grid.onKeyDown = function (e) {
// delete key
if (e.keyCode == 46) {
if (confirm('confirmez-vous la suppression de la ligne : ' currentID)) {
dataView.deleteItem(currentID);
deletedRowIds.push(currentID);
}
return true;
}
....