【发布时间】:2019-01-08 09:09:17
【问题描述】:
我有一个使用 dataView 运行的 SlickGrid,我正在使用 rowSelectionModel 和选项 multiSelect=false。当我在网格中选择某些内容,然后通过单击按钮来展开我的网格以显示一些隐藏的行时,选择会正确移动,但旧的选择仍然保留在旧行上。
这是我目前所拥有的:
var dataView = new Slick.Data.DataView({inlineFilters: false});
var grid = new Slick.Grid(gridDiv, dataView, columns, options);
grid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow: true}));
grid.setSelectedRows([]); //make sure the selection is empty
dataView.onRowsChanged.subscribe(function (e, args) {
grid.invalidate();
});
dataView.beginUpdate();
dataView.setItems(data);
dataView.setFilter(displayFilter);
dataView.endUpdate();
dataView.syncGridSelection(grid);
grid.render();
以下是一些关于该行为的屏幕截图:
展开前:
扩展后的预期行为:
展开后的实际行为:
我很确定我很接近,但我无法弄清楚我做错了什么。
提前感谢您抽出宝贵时间帮助我:)
编辑:我可能找到了一些东西。我正在使用 syncGridSelection 设置一些事件,但稍后会覆盖它们。我覆盖的事件是
dataView.onRowCountChanged()
dataView.onRowsChanged()
grid.onSelectedRowsChanged
这可能是这里的问题吗?我需要这些事件来使折叠/展开功能起作用。 grid.onSelectedRowsChanged 用于将选中项传递给图表,因此也是必需的。
编辑 2: 我能够通过示例 5 重现该问题,修改后的代码可以在 in this paste 找到 重现步骤: 1. 选择项目 10 2.收起第7条
【问题讨论】:
-
很抱歉 Slickgrid 社区没有做出回应,这不是一个简单的问题。我要提出的主要观点是,您应该使用github.com/6pac/SlickGrid 而不是原来的 MLeibman 存储库,它基本上已经死了。新的 repo 有大量的 bug 修复、改进和与现代版本的 jQuery 一起使用。你能确认你正在这样做吗?
-
嗨,本,感谢您的回复。是的,我正在使用您的存储库。
-
好的,太好了。因此,如果您可以根据 repo 中的示例文件之一提供测试,您需要指定哪个示例文件以及您所做的确切更改,然后我将提供一个用于测试的实时示例并且可以提供帮助。
-
我基本上使用折叠示例 (5) 并添加了 rowSelection 模型。当我使用此功能通过按钮切换元素时出现奇怪的行为:
function toggleItem(dataView, itemId) { var target = dataView.getItemById(itemId); target._collapsed = !target._collapsed; dataView.updateItem(target.id, target); }因此要重现它,您可以使用示例 5,添加选择而不是编辑并添加具有该功能的按钮。很抱歉,我错过了将其添加到主帖中。 -
我想我找到了一些东西,我已经更新了我的帖子
标签: javascript slickgrid