extjs组合框显示空白列表

时间:2011-11-20 02:05:21

标签: extjs combobox

嗨,我在制作一个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任何想法?提前谢谢!

5 个答案:

答案 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',