HandsOnTable - 使用更新的mergeCells选项的updateSettings无效

时间:2015-06-23 12:29:16

标签: handsontable

我有一个带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/

2 个答案:

答案 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);

在此处查看:http://jsfiddle.net/gncb55jp/3/

答案 1 :(得分:1)

与此同时,您可以跟踪要合并的单元格"在对象数组中,然后在获得新数据后修改该数组。之后你可以调用render()。绝对是一种解决方法,但如果你需要在等待下一个版本的时候准备好任何类型的截止日期,那么它会让你感到震惊。