2009-04-06 10 views
0

以下のコードでは、Ext.data.Storeを使用して、テーブルのメタデータ(列見出しの場合)とテーブルのデータを取得します。バックエンドのPHPスクリプトが正しく動作していて、Ext.data.Storeにはデータの有効なレコードが含まれています。グリッド自体に入ることはできません。extJS - GridPanelでレンダリングするデータを取得できません

APIドキュメントでは、Ext.grid.GridPanelのプロパティがstoreと定義されているように見え、残りの部分は処理されます。

注:以下のコードは、アプリケーションの残りの部分とは別になっています。アプリケーションの残りの部分の影響を受けることなく、グリッドを稼働できるかどうか確認するために、この部分を抜き出しました。

Ext.BLANK_IMAGE_URL = 'js/ext/resources/images/default/s.gif'; 
Ext.onReady(function() { 
    var columns = []; 
    var fields = []; 


    var tabPanel = new Ext.TabPanel({ 
     renderTo: Ext.getBody(), 
     activeTab: 0, 
     height: 700 
    }); 

    var queryHeaders = Ext.data.Record.create([ 
     {name: 'id'}, 
     {name: 'table'}, 
     {name: 'field'}, 
     {name: 'title'} 
    ]); 

    var applicationStore = new Ext.data.Store({ 
     autoLoad: true, 
     reader: new Ext.data.JsonReader({root: 'fields'}, queryHeaders), 
     url: 'http://localhost/aargh/index.php/applications/hardware', 
     listeners: { 
      'load': function() { 
       console.info(applicationStore); 
       applicationStore.each(function(r) { 
        this_column = []; 
        this_column['header'] = r.data['title']; 
        this_column['dataIndex'] = r.data['id']; 
        columns.push(this_column); 
        this_column = [] 
        this_column['name'] = r.data['id']; 
        fields.push(this_column); 
       }); 

       console.info(fields); 
       var queryFields = Ext.data.Record.create([fields]); 

       var queryStore = new Ext.data.Store({ 
        autoLoad: true, 
        reader: new Ext.data.JsonReader({root: 'fields'}, queryFields), 
        url: 'http://localhost/aargh/index.php/query/execute/applications/hardware', 
        listeners: { 
         'load': function() { 
          console.info(queryStore); 
          tabPanel.add(new Ext.grid.GridPanel({ 
           title: 'Hardware', 
           store: queryStore, 
           columns: columns, 
           autoHeight: true, 
           frame: true 
          })); 
          tabPanel.doLayout(); 
         } 
        } 
       }); 
      } 
     } 
    }); 
}); 

私はFirebugのでapplicationStorequeryStoreオブジェクトを確認として、私は(もちろん、レコード番号と#を置き換え)applicationStore.data.items.#.jsonqueryStore.data.items.#.jsonに完全に予想されるデータの結果を見ることができます。

アイデア?

答えて

1

うわー - これは私たちに3日間トラブルを与えてきました。私は配列内の配列を作成していたことがわかりますvar queryFields = Ext.data.Record.create([fields]);

これを変更すると、var queryFields = Ext.data.Record.create(fields);が問題を解決しました。

+0

Heh。だからあなたが投稿したとすぐにそれを理解した? –

+0

その後、私は夢中になった。これを投稿し、extJSフォーラムへのクロスポストをしました。 –

関連する問題