我有一个带mergeCells
选项的HandsOnTable,在特定事件中我进行了一次服务器调用,它给了我更新的数据,因此合并单元格选项也需要更新。
对于例如在服务器调用之前,每5行进行一次分组,但是在4行之后进行分组。
我使用hot.updateSettings(hotOptions)
更新了mergeCells
个hotOptions,但它没有更新设置。
在服务器呼叫之前:
var hotOptions =
{
data: Handsontable.helper.createSpreadsheetData(5,5),
colWidths: [47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47],
rowHeaders: true,
colHeaders: true,
contextMenu: true,
mergeCells: [
{row: 0, col: 0, rowspan: 2, colspan: 2},
{row: 3, col: 3, rowspan: 2, colspan: 2}
]
};
hot = new Handsontable(container, hotOptions);
服务器调用后:
hotOptions.mergeCells = [
{row: 0, col: 0, rowspan: 3, colspan: 3},
{row: 0, col: 3, rowspan: 2, colspan: 1}
];
//just to prove that data is updating
hotOptions.colWidths = [100, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47];
hot.updateSettings(hotOptions);
我可以销毁早期的HOT实例并使用新选项创建新实例(附加小提琴这样做),但我希望与updateSettings
实现相同。
更多详情:http://jsfiddle.net/ru53zo3o/1/
答案 0 :(得分:2)
我想我已经解决了这个问题。
在调用HOT实例的updateSettings
之前,通过将更新的mergeCells
数组作为属性传递,用Handsontable.MergeCells
对象的新实例更新其mergeCells
属性。
hotOptions.mergeCells = [{row: 0, col: 0, rowspan: 2, colspan: 3} ];
hot.mergeCells = new Handsontable.MergeCells(hotOptions.mergeCells);
hot.updateSettings(hotOptions);
答案 1 :(得分:1)
与此同时,您可以跟踪要合并的单元格"在对象数组中,然后在获得新数据后修改该数组。之后你可以调用render()。绝对是一种解决方法,但如果你需要在等待下一个版本的时候准备好任何类型的截止日期,那么它会让你感到震惊。