在 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/