gpt4 book ai didi

javascript - SlickGrid 多级分组与组级选择

转载 作者:行者123 更新时间:2023-12-03 22:22:41 25 4
gpt4 key购买 nike

current grid status

我已经实现了一个带有自定义选择模型的光滑网格以及自定义复选框选择插件。我还添加了组级别复选框,以允许在顶层切换选择。我的要求之一是仍然可以通过任何父级分组复选框选择折叠的分组。

我的绊脚石似乎是我无法弄清楚如何选择当前在组中不可见的行。光滑网格维护视觉上选择的项目集,而网格数据 View 维护完整的选定项目集(无论是否可见)。但是,当单击折叠行的组复选框时,我无法弄清楚如何通过管道传输数据。

我正在像这样配置我的网格:

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 to custom plugins, too long to include here具体来说,如果您查看 slick.checkboxselectionmodel57 行:

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

groupRowIndex 永远不会解析隐藏行,因此永远不会被选中。我尝试在单击时展开该组,然后解析行,这可行,但是当随后折叠该组时,会在网格中选择错误的行。

任何帮助将不胜感激!

一些注意事项:

最佳答案

gist to updated plugins

我相信功能解决方案可以让任何寻求类似行为的人走上正确的道路,但是,我不确定这些插件独立工作的效果如何。我的要求之一是只允许通过行复选框选择行。

一个问题(我确信很容易改进)是组级别复选框仍然需要在组格式运算符中定义

我的问题的主要解决方案是在进行组级选择/取消选择时展开所有折叠的组,执行任何选择/取消选择例程,然后折叠任何以前展开的组

编辑:

当网格有大量数据(10k 行)时,此操作会失败。以赏金重新开放。

看来必须扩展和折叠如此多的组会导致性能下降,从而导致问题。

关于javascript - SlickGrid 多级分组与组级选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60061043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com