【问题标题】:SlickGrid : How to stop certain columns from being reordered?SlickGrid:如何阻止某些列重新排序?
【发布时间】:2017-07-19 07:42:08
【问题描述】:

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

var options = {
  enableColumnReorder: true
};

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

【问题讨论】:

  • “阻止列重新排序”的定义有点模糊。例如,您可能希望将左侧或右侧列固定在该位置。或者,您可能希望三列在网格中以特定顺序彼此相邻显示,但仍允许将其他列拖到组的左侧或右侧。这些将需要完全不同的解决方案。
  • 我明白@Ben 的意思。因此,就我而言,我必须阻止网格左侧的 5 个“冻结”列重新排序。

标签: javascript angularjs slickgrid


【解决方案1】:

不幸的是,没有直接的选择来实现这一点,但如果我们探索源代码,我们会发现它们使用 jquery 可排序插件。所以我们可以“注入”到 sortable 调用中,为`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

【讨论】:

  • 它并不难看...“你必须做的,你必须做的”。非常感谢。我将尝试解决类似的问题,看看是否可以将其实现到我的 SlickGrid 中(我们在组织中的“SlickGrid”上编写了一个包装器:/)。但这很有帮助。
  • 我以另一种方式做到了,但我想你的答案是两者的更清洁的方法。因此接受答案。
  • 真的很高兴这有帮助:)
  • 仅供参考,有几个“冻结列”实现,最近没有更新 github.com/mleibman/SlickGrid/issues/530。将我的更新应用到 JLynch 存储库在我的列表中(我们决定与其尝试合并两者,不如“赶上”jLynch 代码更容易。
【解决方案2】:

您实际上可以显式禁用列重新排序并设置您需要的每一列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

【讨论】:

  • 'sortable' 标志使列可排序,即,单击标题时,行将按字母顺序排序。我正在寻找这样的标志,它将使列能够重新排序。 ://
猜你喜欢
  • 2014-02-15
  • 2013-09-11
  • 2010-11-02
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多