extjs combobox показывает пустой список - PullRequest
1 голос
/ 20 ноября 2011

Привет, у меня проблемы с созданием 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'
    })
});

Когда вызывается bene.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 получает ответ от bene.php, но когда ящелкните на поле со списком, чтобы отобразить значения, оно показывает только крошечное пустое поле: есть идеи?Заранее спасибо!

Ответы [ 5 ]

1 голос
/ 01 августа 2012

Добавьте этот объект к вашему списку:

displayField: 'name',
valueField: 'id'
0 голосов
/ 11 сентября 2012

У меня была такая же проблема, потому что я использовал сложные имена полей в моей модели, и они не работают с выпадающим списком.Т.е. мне пришлось поменять

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',
0 голосов
/ 21 ноября 2011

попробуйте изменить режим на queryMode

0 голосов
/ 23 ноября 2011

Я думаю, что код был неясен для некоторых людей, поэтому я обновляю код, чтобы обеспечить детальное понимание:

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,
    //..........
});

Вот как я использую в своем коде, и он работает нормально.

0 голосов
/ 20 ноября 2011

Все выглядит правильно, кроме одной вещи: попробуйте поместить конфигурацию считывателя в конфигурацию прокси.

    //...
    proxy: new Ext.data.HttpProxy({
        url: '../data/benef.php',
        reader: new Ext.data.JsonReader({
            fields: ['id', 'name'],
            root: 'benef'
        })
    }),
    //...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...