SlickGrid:如何阻止某些列被重新排序?

时间:2017-02-28 11:03:43

标签: javascript angularjs slickgrid

我需要停止重新排序SlickGrid中的某些列。我找不到办法。每列都没有选项允许重新排序,如“可调整大小”或类似的情况。以下标志使所有列都可以重新排序:

var options = {
  enableColumnReorder: true
};

如果有任何解决方法,请告诉我。 TIA

2 个答案:

答案 0 :(得分:1)

不幸的是,没有直接的选择来实现这一点,但如果我们探索源代码,我们会发现它们使用jquery可排序插件。所以我们可以注射"进行可排序的调用,为`sortable plugin添加选项cancelitems

在列选项中:

headerCssClass: "disable-reorder"

在初始化中:

var origSortable = $.fn.sortable;
$.fn.sortable = function (options) {
  if (options !== null && typeof options === 'object'){
    options.cancel = '.disable-reorder';
  }
  return origSortable.apply(this, arguments);
};

data = [
  //some data
];
grid = new Slick.Grid("#myGrid", data, columns, options);

这会阻止类.disable-reorder的标头无法重新排序。

这是丑陋和黑客的方式,但我找不到任何其他选择。

Full fiddle

答案 1 :(得分:0)

您实际上可以明确禁用列重新排序并设置所需的每列sortable

例如:

var columns = [
    { id: "title", name: "Title", field: "title", sortable: false },
    { id: "duration", name: "Duration", field: "duration", sortable: true, formatter: dayFormatter },
    { id: "%", name: "% Complete", field: "percentComplete", sortable: true },
    { id: "start", name: "Start", field: "start", formatter: dateFormatter, sortable: true },
    { id: "finish", name: "Finish", field: "finish", formatter: dateFormatter, sortable: true },
    { id: "effort-driven", name: "Effort Driven", field: "effortDriven", sortable: true }
  ];

取自他们的例子here

添加:列选项的文档 - https://github.com/mleibman/SlickGrid/wiki/Column-Options