我有一个运行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
看过代码后,我认为这实际上是有效的。只是你的CSS改变掩盖了一点。
有选定的行和活动的行。这些是不同的东西。您已将两者的CSS(在页面本身的CSS区域中)设置为相同。因此看起来选择仍然存在,实际上它已被删除,但该行现在处于活动状态。
只需删除两个CSS规则并查看即可。
要获得额外积分,请使用:
dataView.syncGridSelection(grid, true);
当选择在折叠/展开时移入和移出视线时,网格将保留选择。