光滑网格列重新排序不能正确工作

Slickgrid column reordering not working correctly

本文关键字:排序 不能 工作 网格 新排序      更新时间:2023-09-26

我正在使用Slickgrid javascript库,并且我已经用以下选项初始化了我的网格:

var options = 
{
  enableCellNavigation: true,
  enableColumnReorder: true,
  syncColumnCellResize: false,
  asyncEditorLoading: true
};

我有我的滑溜网格的其余部分实现,它是伟大的工作。我遇到的唯一问题是列重新排序不能正常工作。

我可以将列标头拖动到另一个位置,但是当它在我想要放下它的地方徘徊时,其他列标头不会像我之前看到的例子那样移动。我通常需要在列标题上乱涂乱画,直到有空格。

我没有看到任何关于列标题不能重新排序的文档,所以我甚至不知道在哪里,或者是什么可能导致这些问题。

有没有人有任何类似的问题,如这些与Slickgrid,或任何建议?

我最近刚开始使用SlickGrid,我遇到了一个类似的问题。

我是这样做的:

var options = { ... };
var dataView = ...;
// initialize columns with empty array
var columns = [];
// intialize myGrid with the empty columns
var myGrid = new Slick.Grid(
                  "#myGrid", dataView,
                  columns, options);
// initialize columns here (e.g. after loading dynamic column header data)
columns.push(
  {id:"sel", name:"#", field:"num", sortable: true},
  {id:"title", name:"Title", field:"title", sortable: true},
  {id:"duration", name:"Duration", field:"duration", sortable: true});
// update the columns
myGrid.setColumns(columns);
你可能会问我为什么用那种方式做这件事。我有一些来自动态内容的列标头,并试图保持内容加载与行数据加载的方法相同。在任何情况下,其他一切(例如事件处理程序,更新行等)似乎工作得很好,当我做了上面的方式,除了奇怪的列重新排序行为,你描述的。

经过多次试验和错误,并将我的代码与提供的示例进行比较,结果发现我的错误是在初始化期间没有正确设置列。显然,当你叫新斯利克时,奇怪的行为就会发生。带有空列数组的网格。

我所做的就是简单地用一个虚拟的非空列数组初始化网格,然后仍然调用setColumns来设置实际的列。例如

// intialize myGrid with dummy column array
var myGrid = new Slick.Grid(
                  "#myGrid", dataView,
                  [{id: "dummy"}], options);

在我做了这个改动之后,其他的一切都和预期的一样。

我花了一点时间才弄明白,但我希望它能帮助你或其他可能遇到类似问题的人。