Ext.JS GroupingViewをAjaxでJSON形式で扱ってみる

| コメント(0) | トラックバック(0)
sc0003.png

Ext.JSでグルーピング表示のサンプルがあったので、使ってみました。以下Ext.JSのサンプルページ

http://extjs.com/deploy/dev/examples/grid/grouping.html

集計もやってみましたが、集計はまだExt。JSには実装されていないようで、サンプルページのJavascriptからいただいて実装していますが、割愛させていただきます。

ソース中に静的に書かれたデータをds(以降、データストア)に読み込み、GroupingViewで表示するサンプルでしたが、このデータをAjaxで取得して動的に更新できないものかやってみました。

まず、AjaxでJSON形式のデータを取得するので、dsにJsonStoreを使おうとしましたが、できませんでした。

そもそも、グルーピングの基本は、dsにGroupingStore(Ext.data.GroupingStore)を使わなければなりませんでした。以下サンプルです。

補足:指定期間のデータを取得してきて、「division」フィールドでグルーピングします。sort情報(sortInfo)という項目ですが、必須のようです。なので、データにtypeがあり、そのtypeで昇順にソートを指定してます。listenersのbeforeloadでds.load()される前に、textFiled(monthDate)の値を取得してセットしています。

ds = new Ext.data.GroupingStore({
                                proxy    : new Ext.data.HttpProxy({
                                    url        :     '/ajax.php', // ajaxでjsonを返却するもの指定
                                    method    :    'POST'
                                }),
                                baseParams : {
                                        dateFrom            : '20080406',
                                        dateTo                : '20080412'
                                },

                                reader    : new Ext.data.JsonReader({
                                    root : 'results',  // JSONのrootタグをresultsとしてます。
                                    totalProperty : ''
                                },  rec  //rec は別途Ext.data.Record.createで作ったレコードの型
                                ),
                                groupField    : 'division', // divisionでグループ化
                                sortInfo    : {field:"type",direction:"ASC"},
                                listeners:    {
                                    'beforeload'    :     function(){
                                                            var month = Ext.get('monthDate').getValue();
                                                            if(month != ""){
                                                                this.baseParams.dateFrom     =month;
                                                            }
                                                        }
                                    }

 あとは、dsをExt.grid.GridPanelのstoreで指定します。

次にExt.grid.GridPanelのview部分ですが、
view : new Ext.grid.GroupingView({
  hideGroupedColumn : true
})
で、グループ化したフィールドを非表示にできます。そのあたりは、サンプルにもあるので、割愛します。

 データストア(ds)という、データが保存されている場所とそれらを表示するGridなどのビューの部分の関係がすこしばかりわかったきがしました。

トラックバック(0)

トラックバックURL: http://qualia.gcblog.net/mtcs/mt-tb.cgi/39

コメントする

このブログ記事について

このページは、ownerが2008年6月19日 10:21に書いたブログ記事です。

ひとつ前のブログ記事は「MT4でCAPTCHA 若干のカスタマイズしてみました」です。

次のブログ記事は「Windows-31J」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。