Slickgrid получить данные из невидимых выбранных строк

Когда фильтр применяется к выбранным строкам, скрытые выделенные строки не получают с помощью getSelectedrows(). Он возвращает только выбранные строки, которые являются видимыми. Поиск не может получить одну. Нужны данные выбранных строк, которые являются видимыми и невидимыми.

Заранее спасибо.!

1 ответ

Посмотрите здесь: https://github.com/6pac/SlickGrid/wiki/DataView

Цитата:

Один из наиболее распространенных вопросов о DataView - как синхронизировать состояние CSS выбора или стиля ячейки при изменениях DataView. Допустим, пользователь выбрал строку. Если затем они изменяют фильтр в DataView, чтобы скрыть некоторые элементы, сетка получает вызов для аннулирования всех измененных строк, включая выбранную, но она не знает, что элемент, который там отображался, перемещен куда-то еще. Что нам нужно сделать, это сохранить идентификаторы выбранных элементов и обновлять выборку в сетке каждый раз, когда изменяется DataView.

К счастью, в DataView есть вспомогательный метод, который может позаботиться об этом:

syncGridSelection(grid, preserveHidden) - Синхронизирует выбранные строки сетки с DataView, подписавшись на событие onSelectedRowsChanged сетки, а также на события onRowsChanged и onRowCountChanged объекта DataView. Если preserveHidden имеет значение true, он будет сохранять выбранные элементы, даже если они не отображаются в виде строк. Например, если вы выбираете элемент, измените фильтр DataView, чтобы этот элемент больше не отображался в сетке, а затем измените его обратно, элемент останется выбранным. Если preserveHidden имеет значение false, все выбранные элементы, которые не могут быть сопоставлены со строками, удаляются. Реализация действительно проста, и я включу ее здесь для справки:

function syncGridSelection(grid, preserveHidden) {
  var self = this;
  var selectedRowIds = self.mapRowsToIds(grid.getSelectedRows());;
  var inHandler;

  function update() {
    if (selectedRowIds.length > 0) {
      inHandler = true;
      var selectedRows = self.mapIdsToRows(selectedRowIds);
      if (!preserveHidden) {
        selectedRowIds = self.mapRowsToIds(selectedRows);
      }
      grid.setSelectedRows(selectedRows);
      inHandler = false;
    }
  }

  grid.onSelectedRowsChanged.subscribe(function(e, args) {
    if (inHandler) { return; }
    selectedRowIds = self.mapRowsToIds(grid.getSelectedRows());
  });

  this.onRowsChanged.subscribe(update);

  this.onRowCountChanged.subscribe(update);
}
Другие вопросы по тегам