Я попытался использовать handsontable и хочу добавить пользовательские элементы в контекстное меню.
Существует множество учебных пособий для реализации пользовательских меню, но при этом игнорируются элементы по умолчанию.
Поэтому я добавил ключииз всех пунктов, но некоторые из них не работают.
Моя настройка выглядит следующим образом.
var basicSettings = {
minRows: 1,
minCols: 1,
rowHeaders: false,
colHeaders: false,
hiddenColumns: true,
contextMenu: {
items: {
row_above: {},
row_below: {},
"hsep1": "---------",
col_left: {},
col_right: {},
"hsep2": "---------",
remove_row: {},
remove_col: {},
"hsep3": "---------",
undo: {},
redo: {},
"hsep4": "---------",
make_read_only: {},
"hsep5": "---------",
alignment: {},
"hsep6": "---------",
copy: {},
cut: {},
"paste": {
name: 'Paste',
callback: function (key, option) {
this.copyPaste.triggerPaste();
}
},
"hsep7": "---------",
mergeCells: {
name: "Merge"
},
"hsep8": "---------",
// Custom menu item to set color of cells
set_color: {
key: "color",
name: "Color",
"submenu": {
"items": [
{
key: "color:1",
"name": "Black",
callback: function(key, options) {
for (var i = options[0].start.row; i <= options[0].end.row; i ++){
for (var j = options[0].start.col; j <= options[0].end.col; j ++){
this.getCell(i, j).className = "color-black";
}
}
}
}, {
key: "color:2",
"name": "White",
callback: function(key, options) {
for (var i = options[0].start.row; i <= options[0].end.row; i ++){
for (var j = options[0].start.col; j <= options[0].end.col; j ++){
$(this.getCell(i, j)).removeClass("color-*").addClass("color-white");
}
}
this.render();
}
}, {
key: "color:3",
"name": "Red",
callback: function(key, options) {
for (var i = options[0].start.row; i <= options[0].end.row; i ++){
for (var j = options[0].start.col; j <= options[0].end.col; j ++){
this.getCell(i, j).style.backgroundColor = "red";
}
}
this.render();
}
}
]
}
}
}
},
manualRowResize: true,
manualColumnResize: true,
contextMenuCopyPaste: {
swfPath: '/bower_components/zeroclipboard/dist/ZeroClipboard.swf'
},
copyPaste: true,
mergeCells: true,
search: true,
stretchH: 'all',
autoColumnSize: {useHeaders: true},
autoRowSize: {syncLimit: 300},
width: 1000,
height: window.innerHeight - 100,
licenseKey: "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"
};
Меню выглядит следующим образом.
![Current Menu](https://i.stack.imgur.com/n8ffr.png)
Вопрос 1:
Можно ли добавить пользовательский элемент со всеми элементами меню по умолчанию?Если это так, мне не нужны ответы на вопрос 3 и вопрос 4.
Вопрос 2:
Самая важная часть, которая позволяет мне задать этот вопрос, - это пользовательское меню, то есть set_color.,После нажатия «Черный» или «Красный», он превращается в этот цвет, но после того, как я изменяю значение ячейки, он возвращается.Как я могу предотвратить изменение цвета фона в ячейках?
Вопросы 3:
Мне нужен дополнительный пользовательский элемент помимо всех включенных функций.Но я не могу найти подходящий ключ для элемента "Слияние".Текущая функция «Слияние» работает так странно.Как заставить функцию работать правильно?
Вопрос 4:
Я пытался https://github.com/handsontable/handsontable/issues/2853 реализовать функцию вставки, но я вижу эту ошибку.
Uncaught TypeError: Cannot read property 'triggerPaste' of undefined
Пожалуйста, помогите мне с этим handsontable использования.Заранее спасибо.