我需要一种方法来创建一个电子表格,用户可以在其中粘贴任何列。目前在电子表格中粘贴内容不会像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/
由于
答案 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);
});
答案 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/
请注意,我还注释了小提琴中的回调,因为它的实现方式,它阻止了新列的创建,尽管上下文菜单项不再显示。