Многоуровневая группировка SlickGrid с выбором уровня группы - PullRequest
10 голосов
/ 04 февраля 2020

current grid status

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

Кажется, что мой камень преткновения заключается в том, что я не могу понять, как выбирать строки, которые в данный момент не видны в группе , Гладкая сетка поддерживает набор визуально выбранных элементов, в то время как представление данных сеток поддерживает полный набор выбранных элементов, видимых или нет. Однако я не могу понять, как передать данные, установив флажок группы в свернутой строке.

Я настраиваю свою сетку следующим образом:

let checkboxSelectionModel = new Slick.CheckboxSelectionModel();
this.grid.setSelectionModel(checkboxSelectionModel);

this.grid.registerPlugin(new Slick.Data.GroupItemMetadataProvider());

let onSelectedRowIdsChanged = this.dataProvider.syncGridSelection(this.grid, true, true);

onSelectedRowIdsChanged.subscribe(
  function(e: any, args: any)
    {
      //business logic stuff                    
    }
  );

let groupedCheckboxSelector = new Slick.GroupedCheckboxSelectColumn({
  cssClass: "slick-cell-checkboxsel",
  onSelectedRowIdsChangedHandler: onSelectedRowIdsChanged
});

let columns = this.grid.getColumns();
columns.unshift(groupedCheckboxSelector.getColumnDefinition());
this.grid.setColumns(columns);

this.grid.registerPlugin(groupedCheckboxSelector);

gist для пользовательских плагинов, слишком длинных, чтобы включать их здесь В частности, если вы посмотрите на строку 57 из slick.checkboxselectionmodel:

$.each(dataItem.rows, function(index, groupRow) {
  var groupRowIndex = _self._grid.getData().getRowById(groupRow.id);
    if (groupRowIndex) {
      selection.push(groupRowIndex);
    }
});

groupRowIndex никогда не разрешается для скрытых строк и поэтому никогда не выбирается. Я попытался развернуть группу при нажатии, затем разрешить строки, что работает, но когда группа свернута впоследствии, в сетке выбираются неправильные строки.

любая помощь будет принята с благодарностью!

некоторые примечания:

1 Ответ

1 голос
/ 06 февраля 2020

Суть обновленных плагинов

Функциональное решение, которое, я уверен, могло бы направить любого, кто ищет подобное поведение на правильный путь, однако я не уверен, насколько хорошо любой из этих плагины будут работать независимо. одно из моих требований состояло в том, чтобы разрешить выбор строки только с помощью флажка строки.

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

основное решение моей проблемы состояло в том, чтобы развернуть все свернутые группы при выполнении выбора / отмены выбора на уровне группы, выполнить любые процедуры выбора / отмены выбора, а затем свернуть все ранее развернутые группы

РЕДАКТИРОВАТЬ:

Это происходит сбой, когда сетка содержит большие объемы данных (10 тыс. Строк). Повторное открытие с наградой.

Похоже, что снижение производительности из-за того, что многие группы вызывают проблемы, вызывает проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...