2011-01-19 6 views
0

ExtDirectルータからグリッドデータをロードしようとしています。結果には、ストアのフィールドを再設定する必要があるmetaDataオブジェクトが含まれています。ExtJS DirectStoreのフィールドのメタデータ設定

Uncaught TypeError: Cannot read property 'sortType' of undefined (ext-all-debug.js:23943) 

JSONの結果は次のとおりです:

var store = new Ext.data.DirectStore({ 
     idProperty: 'id' 
     ,paramsAsHash: true 
     ,directFn: MyApp.Direct.Dashboard.dashboarddata 
     ,root:'data' 
     ,autoLoad: false 
     ,totalProperty:'total' 
     ,fields: [ 
      {name: 'id', mapping: 'id'}, 
      {name: 'type', mapping: 'type'} 
     ] 
     ,baseParams: { 
      type: this.type, 
      filters: this.filters 
     } 
    }); 

缶誰:

{ 
    "action": "Dashboard", 
    "method": "dashboarddata", 
    "type": "rpc", 
    "result": { 
     "success": true, 
     "metaData": { 
      "sortInfo": { 
       "direction": "ASC", 
       "field": "id" 
      }, 
      "fields": [{ 
       "mapping": "id", 
       "id": "id" 
      }, 
      { 
       "mapping": "owner", 
       "id": "owner" 
      }, 
      { 
       "mapping": "name", 
       "id": "name" 
      }, 
      { 
       "mapping": "type", 
       "id": "type" 
      }, 
      { 
       "mapping": "strategy", 
       "id": "strategy" 
      }, 
      { 
       "mapping": "primebroker", 
       "id": "primebroker" 
      }, 
      { 
       "mapping": "startdate", 
       "id": "startdate" 
      }, 
      { 
       "mapping": "date_afc_prelim_approval", 
       "id": "date_afc_prelim_approval" 
      }, 
      { 
       "mapping": "date_afc_approval", 
       "id": "date_afc_approval" 
      }, 
      { 
       "mapping": "date_submit_regulator", 
       "id": "date_submit_regulator" 
      }, 
      { 
       "mapping": "date_approval_regulator", 
       "id": "date_approval_regulator" 
      }, 
      { 
       "mapping": "enddate", 
       "id": "enddate" 
      }, 
      { 
       "mapping": "main_iso_currency", 
       "id": "main_iso_currency" 
      }, 
      { 
       "mapping": "nav_frequency", 
       "id": "nav_frequency" 
      }, 
      { 
       "mapping": "date_first_nav", 
       "id": "date_first_nav" 
      }, 
      { 
       "mapping": "launch_size", 
       "id": "launch_size" 
      }, 
      { 
       "mapping": "target_size", 
       "id": "target_size" 
      }, 
      { 
       "mapping": "memo", 
       "id": "memo" 
      }, 
      { 
       "mapping": "isin_codes", 
       "id": "isin_codes" 
      }, 
      { 
       "mapping": "status", 
       "id": "status" 
      }], 
      "totalProperty": "total", 
      "successProperty": "success", 
      "idProperty": "id", 
      "root": "data" 
     }, 
     "data": [{ 
      "status": "Project closed", 
      "strategy": "Strategy X", 
      "date_afc_approval": "2010-01-01", 
      "startdate": "2010-01-01", 
      "nav_frequency": "Bi-monthly", 
      "date_first_nav": "2010-01-01", 
      "enddate": "2010-01-01", 
      "date_approval_regulator": "2010-01-01", 
      "id": "1", 
      "date_afc_prelim_approval": "2010-01-01", 
      "isin_codes": "123", 
      "target_size": "2000", 
      "owner": "Some name", 
      "name": "First project", 
      "memo": "TEXTEXTEXT", 
      "main_iso_currency": "TND", 
      "primebroker": "Yes", 
      "date_submit_regulator": "2010-01-01", 
      "launch_size": "1000", 
      "type": "TypeX" 
     }], 
     "total": 1 
    }, 
    "tid": 6 
} 

店自体は同じように構成されて、私は私のデータをロードしようとしたとき、私は、しかし、次のエラーを取得しています私を助けてください?これは私にナットを運転している、私は間違って何をしているのか分からない。

ありがとうございます!

ロブ

ps。私はExtJS 3.3.0を使用しています

答えて

1

私はそれを修正しました。デバッグがそのトリックでした。

明らかに、JSONレスポンスでmetaDataオブジェクトを使用してフィールドを更新するときは、フィールドに名前を付ける必要があります。 ExtJSは内部的にルックアップフィールドとしてnameフィールドを使用します。奇妙なことに、ストアのフィールドの静的な設定では、そのフィールドは必要ありません。

... 
"fields": [{ 
       "mapping": "id", 
       "name": "id", 
       "id": "id" 
      }, 
      { 
       "mapping": "owner", 
       "name": "owner", 
       "id": "owner" 
      }, 
      ... 
1

なぜChromeやFirefoxのデバッグ機能を使ってその場所をデバッグするのですか?便利なオプションは、Chromeの例外ブレークを設定することです。

+0

これまでにExtJSをデバッグしようとしましたか? :)ステップのコードの行の多く。とにかく、それは私のベストショットだと思う。 –

関連する問題