Handsontable インスタンスの getDataAtRow( row ) は、表示しているグリッドデータの表示範囲しか取得しない。
つまり、4列存在するデータでも、maxCols : 3 と定義していれば、
表示している3列までしか getDataAtRow はデータ取得をしない。
グリッド表示させないデータを持ち何らかの操作で使用したい場合にどうするか?
var data = [ { A:'A1', B:'B1', C:'C1', D:'D1' }, { A:'A2', B:'B2', C:'C2', D:'D2' }, { A:'A3', B:'B3', C:'C3', D:'D3' }, ];
このJSONを3列まで表示して、4列目のキー'D' をコンテキストメニューで選択した時に
使用する場合、、特別なコーディングではないが、以下になる。
var hot = new Handsontable(document.getElementById("table"), { data: data, rowHeaders: true, colHeaders: true, maxCols: 3, columns: [ { data:'A', type:'text', }, { data:'B', type:'text', }, { data:'C', type:'text', }, ], contextMenu: { items:{ "goPage": { name: 'ページ遷移', callback: function(key, selection, clickEvent){ // 非表示データ key='D' の値を使用 var value = data[selection[0].start.row]['D']; location.href = './etcPage?param1='+value; }, }, }, }, licenseKey: 'non-commercial-and-evaluation' });