HandsonTableで表を操作
オブジェクト(連想配列)形式のJSON
jquery.handsontable.jsを使って表のデータを書き換える。
handsontableの実例サイト(実例が載っています)
JSONが正しいFORMATになっているかチェック&整形サイト
JSONのファイルには配列の最後のデータには「,」を絶対につけないこと。またJSONの最後に「;」も絶対につけない!!
オブジェクト(連想配列)形式のJSON
下記のオブジェクトのJSONを読んでHandsonTableを使って表示します。
[
{
"maker": "メーカー",
"products": "製品名",
"output": "ワット数",
"price": "金額",
"weight": "重量",
"fuel": "燃料",
"noise": "騒音"
},
{
"maker": "A-iPower",
"products": "SJA2300i",
"output": "1800",
"price": "62999",
"weight": "23",
"fuel": "ガソリン",
"noise": ""
},
...
{
"maker": "工進",
"products": "GV-28i",
"output": "900",
"price": "139799",
"weight": "38",
"fuel": "ガソリン",
"noise": "68~65"
}
]
HandsonTableで表を作成
上記のオブジェクト(連想配列)を読んでHandsonTableで下記のテーブルを作りました。列の項目の順番を入れ替えています。 ソースを確認してください。
上記の表を作成するためのCODEを見る
HTML
<div id="handsontable2"></div>Javascript
// 下記を読みこませておく! <script src="ht/handsontable.js"></script> var grid2 = document.getElementById('handsontable2'); var table2 = new Handsontable(grid2, { columns: [ // 列に入れるデータを指定できる {data: "maker"}, {data: "products"}, {data: "price"}, {data: "output"}, {data: "noise"}, {data: "fuel"}, {data: "weight"} ], rowHeaders: true, colHeaders: ["メーカー","製品名","価格","出力","騒音","燃料","重量"], //ヘッダーのA、B・・の代わりに表示する文字を指定 columnSorting: true, //カラム名をクリックすることでソートできるようになる contextMenu: { items: { row_above: { name: '上に行を挿入' }, row_below: { name: '下に行を挿入' }, col_left: { name: '左に空列を挿入' }, col_right: { name: '右に空列を挿入' }, remove_row: { name: '選択している行を削除' }, remove_col: { name: '選択している列を削除' }, } }, minSpareRows:1, // 空白行追加数 licenseKey: 'non-commercial-and-evaluation' }); $(function() { $.getJSON("json/hatsudenki3.json" , function(data) { console.table(data); table2.loadData(data); }); });CSS
<link href="ht/handsontable.full.css" rel="stylesheet" type="text/css">
テーブルのデータを保存する
上記の表を作成するためのCODEを見る
HTML
<div id="handsontable2"></div>Javascript
// 下記を読みこませておく! <script src="ht/handsontable.js"></script> document .querySelector('#button1') .addEventListener('click', function() { //テーブルのデータをすべて取得 console.table("table2.getSourceData()="+table2.getSourceData()); var data = table2.getSourceData(); //JSON(オブジェクト)を保存する $.post( 'jsonWrite.php', {json_data: data, file_name: "json/hatsudenki3x.json" }, function( data, textStatus ) { if( textStatus == 'success' ) { $("#out1msg").html("書出したJSONを読み込んだファイルを下記に表示しました!"); } data2 = data.replace(/},/gi, "},\n"); data2 = data2.replace(/\[\{/gi, "[\n{"); data2 = data2.replace(/}]/gi, "}\n]"); $("#out1").html(data2); } ,'html' ); });CSS
<link href="ht/handsontable.full.css" rel="stylesheet" type="text/css">
書き出したJSONからテーブルを作成
上記のJSON(hatsudenki3x.json)を読み込んでHandsonTableで表示したテーブル(下記)です
上記の表を作成するためのCODEを見る
HTML
<div id="handsontable3"></div>Javascript
// 下記を読みこませておく! <script src="ht/handsontable.js"></script> var grid3 = document.getElementById('handsontable3'); var table3 = new Handsontable(grid3, { columns: [ // 列に入れるデータを指定できる {data: "maker"}, {data: "products"}, {data: "price"}, {data: "output"}, {data: "noise"}, {data: "fuel"}, {data: "weight"} ], rowHeaders: true, colHeaders: ["メーカー","製品名","価格","出力","騒音","燃料","重量"], //ヘッダーのA、B・・の代わりに表示する文字を指定 columnSorting: true, //カラム名をクリックすることでソートできるようになる contextMenu: { items: { row_above: { name: '上に行を挿入' }, row_below: { name: '下に行を挿入' }, col_left: { name: '左に空列を挿入' }, col_right: { name: '右に空列を挿入' }, remove_row: { name: '選択している行を削除' }, remove_col: { name: '選択している列を削除' }, } }, minSpareRows:1, // 空白行追加数 licenseKey: 'non-commercial-and-evaluation' }); document .querySelector('#button2') .addEventListener('click', function() { $.getJSON("json/hatsudenki3x.json?cashe="+(new Date()) , function(data) { console.table(data); table3.loadData(data); }); });CSS
<link href="ht/handsontable.full.css" rel="stylesheet" type="text/css">