jQuery EasyUI でサブグリッドを使う方法
jQuery EasyUI で以下のようなサブグリッドを使う方法。
jQuery EasyUIではこの種のグリッドには「Detail View」という名称がつけられている。その他、グリッドの複数行をまとめて表示する「Group View」など、有用な拡張が用意されている。なお、本機能は標準のライブラリではサポートされておらず、追加ライブラリをインストールする必要がある。
- 追加ライブラリを導入する
jQuery EasyUIのサイトの「Extension」から、「DataGrid View」を選択すると、最下段にダウンロード用のリンクがある。得られたファイルを解凍し、適切なフォルダに配置する。 - HTMLファイルからライブラリを読み込む
拡張の内容によりライブラリは異なる。今回は、datagrid-detailview.js が対象。<script type="text/javascript" src="/jslib/jquery-easyui-1.4.3/jquery-easyui-datagridview/datagrid-detailview.js"> </script>
- JavaScriptコードを拡張する
既に作成したグリッドに、コードを追加する。(グリッド生成時に、サブグリッドもまとめて処理することもできる。)基本的に、formatter を定義して、行を選択した時のイベントハンドラを定義すればOK。
コードサンプル:
var $dg = ... // 通常どおりグリッドを生成 // 以下、追加でサブグリッドを構成するコード $dg.datagrid({ // viewをサブグリッドとして定義 view: detailview, // formatterを定義 detailFormatter:function(index,row){ // サブグリッドを<table>として定義 //// 固有のクラス名を指定しておく return '<div style="padding:2px"><table class="ddv"></table></div>'; }, // 開いたとき(+ボタンを押したとき)の動作を定義 onExpandRow: function(index,row){ // 行番号とクラス名を指定して配下のサブグリッドを取得 var ddv = $(this).datagrid('getRowDetail',index).find('table.ddv); // サブグリッドを生成 // showTripLineItem(index, row, ddv); // 行の高さを設定 $dg.datagrid('fixDetailRowHeight',index); } });