javascript - SlickGrid:重新排序后排序不起作用

标签 javascript jquery slickgrid

在 SlickGrid 中,您可以启用行重新排序(拖放)。请参阅http://mleibman.github.io/SlickGrid/examples/example9-row-reordering.html

我的问题是,一旦我重新排序一行(例如将第 3 行放在第 1 行上方),我就无法再对条目进行排序。如果一列名为“日期”并且我单击该列,则不会发生任何情况。另一方面,如果我手动重新排序行,然后按列排序,它就可以工作。

我不介意“按列排序”会破坏我的手动顺序。我只想保留重新排序后按列排序的选项。

如有任何提示,我们将不胜感激。

(我使用 SlickGrid 是因为有一个很好的 fork ,具有粘性行/列的功能。我在其他地方没有找到此功能,所以这是我唯一的选择)

最佳答案

当网格被手动重新排序时,订阅moveRowsPlugin.onMoveRows的函数就会被执行。该函数调用 grid.setData(data) 来将重新排序的行更新到网格上。调用grid.setData(data)会覆盖DataView并直接在网格上设置数据。因此,对 DataView 所做的更新(例如排序)不再反射(reflect)在网格上。

要解决此问题,请在订阅 moveRowsPlugin.onMoveRows 的函数中将 grid.setData(data) 更改为 dataView.setItems(data) (内联 JavaScript 的第 364 行)。我还建议清除排序字段,以便删除排序指示器。

//Set updated data in DataView
dataView.setItems(data);

//Clear sort columns
grid.setSortColumns([]);

关于javascript - SlickGrid:重新排序后排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32385997/

相关文章:

javascript - jquery tooltip & 符号问题

javascript - 如何在不点击链接的情况下弹出 JavaScript 弹出窗口?

javascript - $.post 和 AJAX 在服务器上不工作,但在本地主机上工作正常

javascript - 位置 : fixed in Materialize css modal not working

javascript - 启用后如何禁用 slickgrid 列重新排序?

javascript - JS函数定义顺序

javascript - bootstrap-vue 表 Action onclick

jQuery 验证 this.Optional(element) 始终为 false

javascript - 如何将 HTML 放入 Slickgrid 单元格?

javascript - Slickgrid Treeview 搜索