Ext JS の味見 - 8
「前回の GridPanel を少しばかりカスタマイズ。」
前回の最小限の GridPanel にいくつかのカスタマイズを加えてみた。
- カラムヘッダーのクリックで、ソートが可能
- 行選択をチェックボックス方式に変更
- 行選択を一行だけ許可
- 行番号の表示
プロパティをちょこちょこっと変更するだけで、これだけの機能を提供してくれるってのは、なかなか便利なんぢゃないかな?
<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 sample8() { // グリッドに表示するデータストア。 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.CheckboxSelectionModel({ singleSelect: true // 選択は一レコードのみに限定 }); // グリッドパネルの定義 var panel = new Ext.grid.GridPanel({ title: 'Grid Test 2', height: 200, width: 320, selModel: sm, // 選択方式を指定 store: store, viewConfig: { forceFit: true // カラム幅を調整 }, columns: [ new Ext.grid.RowNumberer(), // 行番号の表示 {header: 'なまえ', dataIndex: 'name', sortable: true}, {header: '値1', dataIndex: 'v1', sortable: true}, {header: '値2', dataIndex: 'v2'}, sm // 選択チェックボックスの表示 ] }); return panel; } Ext.onReady(function() { var panel = sample8(); panel.render('foo8'); }); </script> </head> <body class="test" style=""> <h1>Ext JS の味見 - 8</h1> <h2>- グリッドパネル 2-</h2> <br /> <div id="foo8"></div> </body> </html>
GridPanel は、ストア、カラム、ビュー、セレクションの組合せになっている。ストアはデータ、カラムは表示する列、ビューは表示方式、セレクションは選択方式の指定で、標準では次のようなものが用意されている。
- store (グリッドに表示するデータのストア)
- SimpleStore
- JsonStore
- XmlStore
- GroupingStore
- view (グリッドの表示方式)
- GridView
- GroupingView
- selModel (グリッドの選択方式)
- RowSelectionModel
- CheckboxSelectionModel
- CellSelectionModel