【问题标题】:SlickGrid DataView syncGridSelection does not remove the old selection when the table changes表更改时,SlickGrid DataView syncGridSelection 不会删除旧选择
【发布时间】: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


【解决方案1】:

看过代码后,我认为它实际上正在工作。只是你的 CSS 改动掩盖了一点。

选中行和活动行。这些是不同的东西。您已将两者的 CSS(在页面本身的 CSS 区域中)设置为看起来相同。所以看起来选择仍然存在,但实际上它已被删除,但该行现在处于活动状态。

把这两条CSS规则删掉看看。

要加分,请使用:

dataView.syncGridSelection(grid, true);

并且电网将保留选择,因为选择在折叠/展开的视线中移动和脱离视线。

【讨论】:

  • 嗨,本,这就是问题所在。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2012-12-07
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多