2013-03-21 154 views
4

我試圖動態地將列添加到列表中。我沒有在任何地方看到示例,也沒有看到在API中這樣做的方法。有沒有人想出了一種方法來克服這個問題,或者有一些示例代碼,我可以看看會有所幫助。動態添加列到列表中

謝謝。

回答

2

臨時解決方案是動態維護數據表。 當需要新列時,更新數據結構並重新啓動整個表。也許下面的代碼片段可能對你有所幫助。

(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); 
10

您是否嘗試過使用handsontable('alter', 'insert_col', index, amount)方法?您可以使用alter方法添加和刪除列和行。請參閱handsontable項目的documentation page

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); 
+0

僅有代碼的答案沒有多大用處。 – 2015-02-09 21:45:55

0

您應該使用alter功能

假設你有一個2×3的表格,你希望它是5×5。

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); 
}