ComboBox в редактируемой сетке: не видно значения - PullRequest
1 голос
/ 27 февраля 2011

У меня есть редактируемая сетка, которая использует магазин. Я хочу вставить комбинированный список в одно из полей. Это мой магазин для сетки:

new Ext.data.Store({  ....
 proxy: new Ext.data.HttpProxy......
 reader: new Ext.data.JsonReader({   
            root: 'rows',
            fields: [..... {name:'wid', mapping: 'wid'},

Существует еще одно хранилище только для выпадающего списка, в котором есть поля 'wid' и 'name'. В моей колонке модель:

 header: 'Worker',
    dataIndex: 'wid',
    editor: new Ext.grid.GridEditor(workerCmb),
    renderer:function(value, p, record){
    return record.data['name'];}

И само комбо:

  valueField: 'wid',
            displayField: 'name',

Когда сетка загружена, ее поле "Рабочий" пусто (это нормально), но в нем нет выпадающего списка. Когда я начинаю редактировать его, я вижу весь список. После редактирования «идентификатор» сохраняется в магазине, но «имя» не отображается, как и поле со списком. Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 27 февраля 2011

это помогло:

  Ext.util.Format.comboRenderer = function(combo){
    return function(value){
        var record = combo.findRecord(combo.valueField || combo.displayField, value);
        return record ? record.get(combo.displayField) : combo.valueNotFoundText;
    }
}
1 голос
/ 09 апреля 2012

Если вы включили фильтрацию ('queryMode = local') в своем поле со списком, имейте в виду, что каждое введенное вами письмо применяется к хранилищу.Поэтому функция findRecord не сможет найти отображаемые имена для отфильтрованных.Это повлияет на другие линии в той же сетке, так как после того, как вы закончите редактирование, вся сетка будет обновлена.

Чтобы избежать потери записей при запуске цикла, удалите фильтры из хранилища списков перед попыткой найти запись.

Ext.util.Format.comboRenderer = function(combo){
    return function(value){
        combo.store.clearFilter(); // -> addition
        var record = combo.findRecord(combo.valueField || combo.displayField, value);
        return record ? record.get(combo.displayField) : combo.valueNotFoundText;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...