2011-07-29 5 views
5

json形式で値を返すjsonストアがあります。今ではjson文字列の行数/レコード数を取得する必要がありますが、store.getCount()関数を使用すると0が返されますが、コンボボックスには行が取り込まれ、store.lengthを使用すると、 phpスクリプトを呼び出しているストアからの戻り値。とにかく、この問題の最良のアプローチは何ですか?サーバーからExtJS:jsonストアの合計行/レコードを返します

+0

のようなオブジェクトをコールバックのカウントを確認する必要がありますので は、Ajaxの非同期リクエストが送信されます、私は.LENGTHを試してみましたが、それはあなたのJsonStoreがロードされつつある方法 – Grigor

+0

(プロキシ、店を動作しませんでした。 loadData、インラインデータ)? – Ballsacian1

答えて

4

これを試してみてください

Ext.getCmp('myStoreId').count 
3

あなたのJSONレスポンスは、その後、あなたのストアオブジェクトにreader: { type : 'json', root : 'users', totalProperty : 'total', successProperty: 'success' }を使用することができ、このような何か...

{ 
    "total": 9999, 
    "success": true, 
    "users": [ 
     { 
      "id": 1, 
      "name": "Foo", 
      "email": "[email protected]" 
     } 
    ] 
} 

することができます。

var myStore = Ext.extend(Ext.data.JsonStore, { 
    ... config..., 
    count : 0, 
    listeners : { 
    load : function(){ 
     this.count = this.getCount(); 
    } 
} 

Ext.reg('myStore', myStore); 

をして、内側のパネルを使用します:

3

として:あなたは、あなたは、単にこれを行うことができますカウントを取得する必要があるとき

items : [{ 
xtype : 'myStore', 
id : 'myStoreId' 
}] 

をデータソースがgetTotalCountに電話してデータセットサイズを取得できる場合はdocsから。

0

私は同じ問題がある、私はフィルタを適用した後にmyStoreのレコードの数を得ることができます。

私は、これらの操作を実行します。

var _count = 0; 

var _filters = []; 

_filters = myStore.filters.items.map(function(item){ 

    return {property: item.property, value: item.value} 

}); 

myStore.clearFilter() 

_count = myStore.count() 

myStore.filter(_filters) 

console.log(_count) 

私は/ディレクトリのmystoreの明確なイベントハンドラの追加/削除/ロードでこのスクリプトを実行します。 あなたは、店のためのAjaxプロキシを使用

proxy : { 
    type : 'ajax', 
    url : 'YOUR URL', 
    reader : { 
     type : 'json', 
     root : 'NAME OF YOUR ROOT ELEMENT', 
     totalProperty : 'NAME OF YOUR TOTAL PROPERTY' // requiered for paging 
    } 
} 

のようになめらか、その後 store.load(のようなお店をロードする場合、私は

- "Uncaught TypeError: Cannot read property 'internalId' of undefined ext.js:39 
Ext.define.updateIndexes ext.js:39 
Ext.define.onAdd ext.js:39 
b.implement.callParent ext.js:39 
Ext.define.onAdd ext.js:39 
fire ext.js:39 
Ext.define.continueFireEvent ext.js:39 
Ext.define.fireEvent ext.js:39 
Ext.define.insert ext.js:39 
Ext.define.addSorted ext.js:39 
Ext.define.add ext.js:39 
Ext.apply.callback ext.js:39 
k ext.js:39 
Ext.define.processResponse ext.js:39 
b.implement.callParent ext.js:39 
(anonymous function) ext.js:39 
Ext.apply.callback ext.js:39 
Ext.define.onComplete ext.js:39 
Ext.define.onStateChange ext.js:39 
(anonymous function)" 
3

後に例外があります)。あなたはそのにこの

store.load({ 
    callback : function(records, operation, success) { 
     console.log(this.getCount());   // count considering paging 
     console.log(this.getTotalCount()); // total size 
     // or even 
     console.log(records.length);   // number of returned records = getCount() 
    } 
}); 
関連する問題