slickgrid: как узнать, какие строки загрязнены

#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;
      }
   ....