отключение элементов редактора комбо в зависимости от значения в сетке - PullRequest
0 голосов
/ 23 марта 2012

Я пытаюсь отключить определенные элементы комбо-редактора в сетке редактора в зависимости от значения в строке сетки.

Проблема с кодом ниже состоит в том, что он корректно отключает элементы со списком при первом использовании, но после этого остается неизменным.

Когда я нажимаю на комбо, событие фокуса всегда запускается, и цикл запускается, и r.data обновляется, как и должно быть, но способ отображения элементов комбо не изменяется после первоначального отображения.

Может ли кто-нибудь помочь мне, как это исправить?

Thx.

SWK

var lifecycle_combo = new Ext.form.ComboBox({
    typeAhead : true,
    mode : 'local',
    triggerAction : 'all',
    valueField : 'value',
    lazyRender : true,
    displayField : 'text',
    store : ref_lifecycle_store,
    listeners : {            
        focus: function(combo, gr, index){
            var lfc=usergrid.activeEditor.record.data.ref_lifecycle;
            ref_lifecycle_store.each(function(r){
                switch(lfc)
                {
                case 'anonymized':
                    if (r.id!='deleted')
                        r.data.selectable=false;
                  break;
                case 'deleted':
                    r.data.selectable=false;
                  break;
                default:
                    if (r.id=='logged_in' || r.id=='some_closed' || r.id=='all_closed')
                        r.data.selectable=false;
                    else
                        r.data.selectable=true;
                }
            });    
        },            
        beforeselect : function(combo, r, index) {                
            return r.get('selectable');
        }
    },
    tpl: '<tpl for=".">' + 
    '<div ext:qtip="{tip}" class="x-combo-list-item ' + 
        '<tpl if="selectable == false">' + 
            'x-combo-list-item-unselectable' + 
        '</tpl>' + 
    '">{text}</div>' + 
    '</tpl>'  
});

Ответы [ 2 ]

0 голосов
/ 05 сентября 2013

Поскольку вы берете значения полей из хранилища, все операции, выполняемые для значений полей, должны выполняться только через хранилище. Лучший способ - удалить элемент, получив его с помощью getStore, и удалить его с помощью Метод removeAt ()

0 голосов
/ 23 марта 2012

Это ExtJs4 или 4?Попробуйте просто отфильтровать магазин, который вы используете в Combobox.Следует оставлять только те записи, которые вы отфильтровали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...