我已经实现了一个带有自定义选择模型和自定义复选框选择插件的Slick Grid。 我还添加了组级别的复选框,以允许在顶级别上切换选择。 我的一个要求是,即使通过任何父级别分组复选框折叠了分组,仍然可以选择折叠的分组。
我的难点似乎在于我无法弄清楚如何选择当前未在组中可见的行。 Slick Grid 在维护着当前可视范围内的选定项的同时,数据视图也在维护着全集合的选定项,无论是否可见。 然而,当单击折叠行的组复选框时,我无法想出如何将其连接到数据。
我正在这样配置我的网格:
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);
将要翻译的内容太长,请转换为自定义插件
具体来说,如果您查看slick.checkboxselectionmodel
的第57
行:
$.each(dataItem.rows, function(index, groupRow) {
var groupRowIndex = _self._grid.getData().getRowById(groupRow.id);
if (groupRowIndex) {
selection.push(groupRowIndex);
}
});
groupRowIndex在隐藏行中永远无法解决,因此永远不会被选择。我尝试点击时展开组,然后解决行,这样可以工作,但是当折叠组后,在网格中选择错误的行。
非常感谢任何帮助!
一些注意事项:
- 如果我选择一行并折叠其组,则该项将保留其选择
- slick grid的另一个分支也有同样不起作用的组选择实现