Slickgrid列重新排序无法正常工作

时间:2011-07-25 16:53:55

标签: javascript slickgrid

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

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

我实现了剩余的slickgrid,它运行良好。我遇到的唯一问题是列重新排序不能正常工作。

我能够将列标题拖动到另一个位置,但是当它悬停在我要放弃的位置时,其他列标题不会像我之前看到的那样根据它们移动。我通常需要弄乱列标题,直到打开一个空格。

我没有看到任何关于列标题无法重新排序的文档,因此我甚至不知道可能导致这些问题的位置或原因。

是否有任何类似问题,例如Slickgrid或任何建议?

1 个答案:

答案 0 :(得分:3)

我最近刚开始使用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);

你可能会问为什么我这样做。好吧,我有一些来自动态内容的列标题,并试图保持内容加载与我的行数据加载相同的方法。在任何情况下,除了您描述的奇怪的列重新排序行为之外,其他所有内容(例如事件处理程序,行的更新等)在我以上述方式执行时似乎都能正常工作。

经过多次试验和错误并将我的代码与提供的示例进行比较后,我发现错误在于在初始化期间没有正确设置列。显然,当您使用空列数组调用新的Slick.Grid时会发生奇怪的行为。

我所做的是简单地用虚拟的非空列数组初始化网格,然后再调用setColumns来设置实际的列。 e.g。

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

在我做出这一改变后,其他所有工作都按预期进行。

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