6

我正在尝试将一列动态添加到handsontable。我在任何地方都没有看到示例,也没有在 API 中看到这样做的方法。有没有人想出一种方法来克服这个问题,或者有一些我可以查看的示例代码会有所帮助。

谢谢你。

4

5 回答 5

10

你试过使用handsontable('alter', 'insert_col', index, amount)方法吗?您可以使用方法添加和删除列和行alter。请参阅handsontable 项目的文档页面

于 2013-04-28T23:49:05.177 回答
3

一个临时的解决方案是动态维护一个数据表。当需要新列时,更新数据结构并重新启动整个表。也许以下片段可能对您有所帮助。

(function($) {
$(function() {
    var data = [['a', 'b', 'c', 'd'], [1, 1, 1, 1], [2, 2, 2, 2]];
    $('#a-div').handsontable({data: data});

    /* add a new column */
    data[0].push('e');
    var len = data.length;
    for (var i = 1; i < len; i++) {
        data[i].push(i);
    }
    $('#a-div').handsontable({data: data});

    /* if new column isn't at the tail */
    data[0].splice(idx, 0, "f");
});})(jQuery);
于 2013-03-24T14:43:38.977 回答
0

如果您定义列设置,则它不会添加列运行时来解决此问题,请参阅链接如何为 Handsontable 创建动态列?

于 2013-07-23T10:16:08.567 回答
0
<div id="handsontable"></div>

JS

var Data = [{
    "header": {scope1: Name, scope2: Address, scope3: Address, scope4: Country},
    "tableData":[{....}, {....}]
}]
var $container = $('#handsontable');
var headerData = [];
var tableData = Data.tableData; 

$.each(Data.header, function(k,v){
    headerData.push(v);
});

$container.handsontable({
    colHeaders: function (col) {
        var j=0;
        var colCount = headerData.length;
        do {
            if(col == j)
                return headerData[j];
            j++;
        } while (j<colCount)
    }
});

var hot = $container.data('handsontable');
hot.loadData(tableData);
于 2015-02-09T21:28:34.093 回答
0

你应该使用alter函数

假设您有一个 2x3 的表,并且您希望它是 5x5。

curRows = myTable.countRows() //curRows = 2
curCols = myTable.countCols() //curCols = 3
var newRows = 5
var newCols = 5

if(newRows > curRows){
   myTable.alter('insert_row',curRows ,newRows - curRows); 
}
else if (newRows < curRows){
    myTable.alter('remove_row', curRows,curRows - newRows );
}
if(newCols > curCols){
    myTable.alter('insert_col',curCols, newCols - curCols); 
}
else if (newCols < curCols){
    myTable.alter('remove_col',curCols, curCols - newCols);
}
于 2016-10-05T20:56:33.937 回答