gpt4 book ai didi

javascript - 如何禁用 Ext JS 中组合框中的项目?

转载 作者:行者123 更新时间:2023-11-29 20:04:23 24 4
gpt4 key购买 nike

如何在 Ext JS 中禁用组合框中的特定项目?

例如我有这些记录

row_1_type_1
row_2_type_2
row_3_type_3

我想禁用第三行,即它应该作为标签保留在组合中,但它将显示为灰色且不可点击。

最佳答案

这里有一个至少可以用于 Ext JS 4.2.1 的解决方案。它是一个插件,可以根据每条记录的值禁用绑定(bind)列表中的某些项目。可以配置检查列表项是否应该被禁用的字段名称。

让我们从如何使用插件开始。

{
xtype: 'combo',
fieldLabel: 'My combo with disabled items',
valueField: 'value',
displayField: 'display',
queryMode: 'local',
store: {
fields: ['value', 'display', 'disabled'],
data: [{
value: 1, display: 'an enabled item', disabled: false
},{
value: 2, display: 'a disabled item', disabled: true
}]
},
plugins: [{
ptype: 'comboitemsdisableable',
disabledField: 'disabled'
}]
}

这是插件。

Ext.define('Ext.ux.plugin.ComboItemsDisableable', {
extend: 'Ext.AbstractPlugin',
alias: 'plugin.comboitemsdisableable',

init: function (cmp) {
var me = this; // the plugin
me.disabledField = me.disabledField || 'disabled';

cmp.tpl = Ext.create('Ext.XTemplate',
'<tpl for=".">',
' <tpl if="this.isDisabled(' + me.disabledField + ')">',
' <div class="x-boundlist-item x-item-disabled"><em>{' + cmp.displayField + '}</em></div>',
' <tpl else>',
' <div class="x-boundlist-item">{' + cmp.displayField + '}</div>',
' </tpl>',
'</tpl>', {
isDisabled: function(disabled) {
return disabled;
}
}
);

// make sure disabled items are not selectable
cmp.on('beforeselect', function(combo, record, index) {
return !record.get(me.disabledField);
});
}
});

这里有一些与插件一起使用的 CSS。它使禁用的项目变灰,并确保禁用的项目在悬停时不会改变其背景以表明它是可选的。

.x-item-disabled.x-boundlist-item {
color: #8c8c8c;
cursor: default;
}

.x-item-disabled.x-boundlist-item-over {
background: inherit;
border-color: white;
}

关于javascript - 如何禁用 Ext JS 中组合框中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12827828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com