Ext JS の味見 - 9
「見た目だけぢゃなく、編集まで Excel 風で。:-)」
GridPanel は表示だけだったけれども、編集可能なグリッドも簡単に実装できる。
Web システムにも関わらず、「うちの社員は Excel に慣れてるんで、できれば Excel みたいに操作できるとありがたいんですけど…。」ってな話は、よくある要望だと思う。これまではその実現に四苦八苦していたはずだけど、Ext JS を使えば、そのあたりも簡単に実現できてしまうってゆーのが、今回の "Ext JS の味見" のソースコードだ。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <style type="text/css"> .test { margin: 5mm; } .test h1 { background-color: darkblue; color: white; padding: 10px; } .test h2 { text-align: right; } </style> <link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-2.2.1/resources/css/ext-all.css" /> <script type="text/javascript" src="http://extjs.cachefly.net/builds/ext-cdn-771.js"></script> <script type="text/javascript"> function sample9() { // グリッドに表示するデータストア。 var store = new Ext.data.SimpleStore({ fields: ['name', 'v1', 'v2'], data: [ ['山田', '100', '200'], ['鈴木', '200', '300'], ['木村', '300', '400'], ['田中', '400', '500'], ['井上', '500', '600'], ['森田', '600', '700'], ['片山', '700', '800'], ['谷口', '800', '900'] ] }); var sm = new Ext.grid.RowSelectionModel({ singleSelect: true // 選択は一レコードのみに限定 }); // エディターグリッドパネルの定義 var panel = new Ext.grid.EditorGridPanel({ title: 'EditorGrid Test', height: 200, width: 320, selModel: sm, store: store, viewConfig: {forceFit: true}, columns: [ {header: 'なまえ', dataIndex: 'name', editor: new Ext.form.TextField()}, {header: '値1', dataIndex: 'v1', editor: new Ext.form.NumberField(), align: 'right'}, {header: '値2', dataIndex: 'v2', editor: new Ext.form.NumberField(), align: 'right'} ] }); return panel; } Ext.onReady(function() { var panel = sample9(); panel.render('foo9'); }); </script> </head> <body class="test"> <h1>Ext JS の味見 - 9</h1> <h2>- エディターグリッドパネル -</h2> <br /> <div id="foo9"></div> </body> </html>
ソースコードを見れば、GridPanel が EditorGridPanel になってるのと、columns のところに editor と align が増えてるのが分かる。align は、数字なので右寄せにしてみただけで、編集には関係がない。editor が味噌なんだけれども、たったこの程度の労力で、Excel 風の編集ができるんだから、Ext JS ってなかなかすごいと思ってもらえるんぢゃないだろうか?
editor には、Ext.form のコンポーネントが指定できる。datefield を指定すればカレンダー入力が可能になるし、timefield を指定すれば、コンボボックスで時刻指定ができるようになる。独自のコンボボックスを用意すれば、もちろんそれを使うこともできる。
3.0 からは editor の指定に xtype も使えるようになってるんだけど、"Ext JS の味見" では、2.2.1 を使っているの、残念ながら xtype は使えない。で、エディターコンポーネントオブジェクトを生成してるって訳だ。ま、普通にコードを書いてる時点では、どっちでも大差ないと思うけど、深く突っ込んでゆくと、xtype のありがたみが分かるようになってくるんだよなぁ…。ま、味見企画ではそこまでいかないと思うけど…。(^^;
今回は、実際に編集できるところを体感してもらいたいので、スクリーンキャプチャはなし!!