嗨,我在制作一个comboBox时遇到了麻烦,如果你帮助我,我真的很感激,这是我商店的代码:
Ext.define('Benef', {
extend: 'Ext.data.Model',
fields: ['id', 'name']
});
var bene = new Ext.data.Store({
model: 'Benef',
reader: new Ext.data.JsonReader({
fields: ['id', 'name'],
root: 'benef'
}),
proxy: new Ext.data.HttpProxy({
url: '../data/benef.php'
})
});
当调用benef.php时,它会以这种方式发送人名:
{
"benef":[
{"id":"1","name":"Person"},
{"id":"2","name":"aPerson"},
{"id":"3","name":"Per 2"},
{"id":"4","name":"BeneP"},
{"id":"5","name":"BeneA"}
]
}
我的comboBox代码是:
dataIndex: 'benefOne',
width: 150,
header: 'Benef',
editor: {
xtype: 'combobox',
typeAhead: true,
selectOnTab: true,
allowBlank: false,
autoSelect: true,
editable: false,
store: bene,
mode: 'local',
triggerAction: 'all',
displayField: 'name',
valueField: 'name',
lazyRender: true,
listClass: 'x-combo-list-small'
}
当我运行脚本时,一切似乎工作正常,firebug从benef.php获得答案但是当我点击组合框来显示值时,它只显示一个很小的空白字段:s任何想法?提前谢谢!
答案 0 :(得分:1)
将此属性添加到组合框:
displayField: 'name',
valueField: 'id'
答案 1 :(得分:0)
除了一件事之外,一切看起来都是正确的:尝试将阅读器配置放入代理配置中。
//...
proxy: new Ext.data.HttpProxy({
url: '../data/benef.php',
reader: new Ext.data.JsonReader({
fields: ['id', 'name'],
root: 'benef'
})
}),
//...
答案 2 :(得分:0)
尝试将模式更改为 queryMode
答案 3 :(得分:0)
我认为某些人的代码并不清楚,所以我正在更新代码以提供详细的理解:
var httpProxy = new Ext.data.HttpProxy({
url: '../data/benef.php'
});
var jsonReader = new Ext.data.JsonReader({
fields: ['id', 'name'],
root: 'benef'
});
var newStore = new Ext.data.SimpleStore({
proxy: httpProxy,
reader: jsonReader
});
var combobox = new Ext.form.ComboBox({
store: newStore,
//..........
});
这就是我在我的代码中使用它的工作原理。
答案 4 :(得分:0)
我遇到了同样的问题,因为我在模型中使用了复杂的字段名称,而这些名字并不适用于组合框。 即我不得不改变
fields:[
{name:'employeeId.char10'},
{name:'fullname.char50'}
],
到
fields:[
{name:'employeeId', mapping:'employeeId.char10'},
{name:'fullname', mapping:'fullname.char50'}
],
和
displayField:'fullname.char50',
valueField:'employeeId.char10',
到
displayField:'fullname',
valueField:'employeeId',