我试图在编辑网格中禁用组合编辑器的某些项目,具体取决于网格行中的值。
以下代码的问题在于,它在首次使用组合时正确禁用了组合项,但之后保持不变。
当我点击组合时,焦点事件总是被触发并且循环运行并且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>'
});
答案 0 :(得分:0)
这是ExtJs4还是4?尝试过滤您在Combobox中使用的商店。它应该只留下您过滤的记录。
答案 1 :(得分:0)
由于您从商店获取字段值,因此对字段值执行的所有操作都应该仅通过存储完成。最好的方法是通过使用getStore获取项目并使用删除它来删除项目removeAt()方法