上下文菜单,在定义列属性时添加列不起作用以隐藏某些列

时间:2014-06-23 18:16:38

标签: handsontable

我需要一种方法来创建一个电子表格,用户可以在其中粘贴任何列。目前在电子表格中粘贴内容不会像https://github.com/warpech/jquery-handsontable/issues/553中提到的那样工作,所以我想启用上下文菜单来添加列。当你将普通数组作为数据源并且你没有设置columns属性时,这可以正常工作,但如果你确实需要定义columns属性,那么在设置

时就不行了
contextMenu: ['col_right']

。我需要定义columns属性,因为我需要隐藏某些列(如此处所提到的https://github.com/warpech/jquery-handsontable/issues/120)。 使事情有效的唯一方法是为上下文菜单定义自定义操作,但我不知道如何去做。

这是一个jsbin:http://jsfiddle.net/8V4Z5/1/

由于

2 个答案:

答案 0 :(得分:0)

好的一个解决方法对我有用,需要玩数据结构。看到我只能在数据源是普通数组并且不应该定义“columns”属性时使上下文菜单工作,我不得不提供普通数组作为数据源。示例如:

var actualData = [
    {"spreadSheetData":[ "Kia", "Nissan", "Toyota", "Honda"]},
    {"year":"2008", "spreadSheetData":[10, 11, 12, 13]},
    {"year":"2009", "spreadSheetData":[ 20, 11, 14, 13]},
    {"year":"2010", "spreadSheetData":[30, 15, 12, 13]}
];

var data = [];
actualData.forEach(function(d){
    data.push(d.spreadSheetData);
});

示例:http://jsfiddle.net/Yw3WE/

答案 1 :(得分:0)

只要使用columns选项初始化Handsontable,就不能再使用上下文菜单添加列。

解决方案是使用单元格选项。 为解决您的问题,我更换了......

columns: [{
  data: 1
}, {
  data: 2
}, {
  data: 3
}],

...与...

cells: function (row, col, prop) {
  var cellProperties = {};

  cellProperties.data = col;

  return cellProperties;
},

这是工作小提琴: http://jsfiddle.net/oyxv3g9w/

请注意,我还注释了小提琴中的回调,因为它的实现方式,它阻止了新列的创建,尽管上下文菜单项不再显示。