![current grid status](https://i.stack.imgur.com/NE6MQ.png)
Я реализовал гладкую сетку с пользовательской моделью выбора, а также плагин выбора пользовательских флажков. Я также добавил флажки уровня группы, чтобы позволить переключение выбора на верхнем уровне. Одно из моих требований заключается в том, что свернутые группировки по-прежнему можно выбирать с помощью любых флажков группировки родительского уровня.
Кажется, что мой камень преткновения заключается в том, что я не могу понять, как выбирать строки, которые в данный момент не видны в группе , Гладкая сетка поддерживает набор визуально выбранных элементов, в то время как представление данных сеток поддерживает полный набор выбранных элементов, видимых или нет. Однако я не могу понять, как передать данные, установив флажок группы в свернутой строке.
Я настраиваю свою сетку следующим образом:
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 никогда не разрешается для скрытых строк и поэтому никогда не выбирается. Я попытался развернуть группу при нажатии, затем разрешить строки, что работает, но когда группа свернута впоследствии, в сетке выбираются неправильные строки.
любая помощь будет принята с благодарностью!
некоторые примечания: