ExtJS:返回json商店中的总行数/记录
问题描述:
我有一个以json格式返回值的json商店。现在我需要获取json字符串中的行数/记录数,但是当我使用store.getCount()
函数时,它返回0,但组合框中填充了行,并且当我使用store.length
时,我得到未定义,可能是因为它不再是数组,它从商店返回,这是调用PHP脚本。无论如何,这个问题最好的办法是什么?ExtJS:返回json商店中的总行数/记录
答
尝试了这一点:
var myStore = Ext.extend(Ext.data.JsonStore, {
... config...,
count : 0,
listeners : {
load : function(){
this.count = this.getCount();
}
}
Ext.reg('myStore', myStore);
然后用内板:每当你需要得到计数,那么你可以简单地做到这一点
items : [{
xtype : 'myStore',
id : 'myStoreId'
}]
:
Ext.getCmp('myStoreId').count
答
从服务器你的JSON响应,可以是这样的......
{
"total": 9999,
"success": true,
"users": [
{
"id": 1,
"name": "Foo",
"email": "[email protected]"
}
]
}
然后你就可以在你的存储对象使用reader: { type : 'json', root : 'users', totalProperty : 'total', successProperty: 'success' }
。
答
我有同样的问题,我可以在应用过滤器后在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明确的事件处理程序。 我有一个异常后
- "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)"
答
如果您使用的商店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(); 有将发送Ajax的异步请求,所以你应该在回调检查计数这样
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()
}
});
它的一个对象,我想。长度又是怎样的你JsonStore得到加载(代理,卖场没有奏效 – Grigor
。 loadData,内联数据)? – Ballsacian1