Я реализовал гладкую сетку с пользовательской моделью выбора, а также с плагином выбора. Я также добавил флажки уровня группы, чтобы позволить переключение выбора на верхнем уровне. Одно из моих требований заключается в том, что свернутые группировки по-прежнему можно выбирать с помощью любых флажков группировки родительского уровня.
Кажется, мой камень преткновения заключается в том, что я не могу понять, как выбирать строки, которые в данный момент не видны в группе. Гладкая сетка поддерживает набор визуально выбранных элементов, в то время как представление данных сеток поддерживает полный набор выбранных элементов, видимых или нет. Однако я не могу понять, как передать данные, установив флажок группы для свернутой строки.
Я настраиваю свою сетку так:
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 никогда не разрешается для скрытых строк и поэтому никогда не выбирается. Я попытался развернуть группу при нажатии, затем разрешить строки, что работает, но когда группа свернута впоследствии, в сетке выбираются неправильные строки.
любая помощь будет принята с благодарностью!
некоторые заметки:
- если я выберу строку и сверну ее группу, элемент сохраняет свой выбор
- есть другая ветвь гладкой сетки, которая имеет одинаково нефункциональную реализацию выбора группы
источник
Ответы:
Суть обновленных плагинов
Я уверен, что функциональное решение может направить любого, кто ищет подобное поведение на правильный путь, однако я не уверен, насколько хорошо каждый из этих плагинов будет работать независимо. одно из моих требований состояло в том, чтобы разрешить выбор строки только через флажок строки.
Один недостаток (который, я уверен, легко улучшается) состоит в том, что флажок уровня группы все еще должен быть определен в вашем операторе формата группы
Основное решение моей проблемы состояло в том, чтобы развернуть все свернутые группы при выполнении выбора / отмены выбора на уровне группы, выполнить любые процедуры выбора / отмены выбора, а затем свернуть все ранее развернутые группы
РЕДАКТИРОВАТЬ:
Это терпит неудачу, когда сетка имеет большие объемы данных (10 тыс. Строк). Повторное открытие с наградой.
Похоже на то, что производительность приходится увеличивать и сворачивать, поэтому многие группы вызывают проблемы.
источник