先上代码,再细说问题:
[code="javascript"]xtype:'combo',
fieldLabel:'类 别',
id:'combo',
width:100,
name:'category',
mode:'remote',
editable :false,
typeAhead: true,
triggerAction: 'all',
valueField:'id',
displayField:'value',
store:new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:'xxxxx',
method:'POST'
}),
reader:new Ext.data.ArrayReader({
totalProperty:'total',
root:'list'
},[
'id','value'
])
}),
listeners:{
beforequery:function(obj){
obj.combo.store.load();
}
}[/code]
接着说下问题:
1.combox是不是只要store.load后,自动回填到combox列表中?不需要我们做诸如mycombo.insert('xxx','xxx')之类的动作?
2.上面的代码,经我测试,server端能够返回数据,返回的数据是:
[color=red]{"total":"5","list":[["5","测试5"],["4","测试4"],["3","测试3"],["2","测试2"],["1","测试1"]],"success":"true","info":"查询账单类别列表成功"}[/color]
但是我发现combo.store.getCount()却等于0
3.另外有个问题,我的firebug居然不能显示ajax提交后的response,以前可以的,我只能用别的工具查看返回的数据。
4.ext开发包中的example里有一个类似的例子,他用的是JSonReader,我之所以不用JSonReader,因为一些其他繁琐的原因。就想用ArrayReader。
希望谁能提供一个可以用的标准案例。ext挺麻烦的,我只想知道一些标准做法,不想深入他的源码查个所以然了。
你用什么数据源,就用什么解析器。只有你要解析数组的时候你才能用ArrayReader啊,你从后台获得的是Json数据,那你就得用JsonReader啊。如果几个Reader能通用,那Extjs还给你提供那么多种类干吗用啊?
firebug不行显示response,是因为没有打开console吗?不知道你用的什么版本的fx和fb。
最后说第一个问题,extjs会自动给你填充。给你个简单样例吧:
[code="java"]
var xxxStore = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : 'xxx!queryXxx.action'
}),
reader : new Ext.data.JsonReader({
root : 'xxxList',
id : 'xxxID'
}, [{
name : 'xxxID'
}, {
name : 'xxxNo'
}])
});
xxxStore.load();
[/code]