gpt4 book ai didi

Extjs4 在组合框中添加一个空选项

转载 作者:行者123 更新时间:2023-12-04 06:41:55 24 4
gpt4 key购买 nike

我在 ExtJS4 中有一个带有这个初始配置的组合框

        xtype: 'combobox',
name: 'myCombo',
store: 'MyStore',
editable: false,
displayField: 'name',
valueField: 'id',
emptyText: 'Select an Option'

我不知道是否有一种简单的方法可以告诉组合添加一个选项,以便用户可以取消选择组合(首先他选择一个选项,然后他不想选择任何东西......所以他想回到“选择一个选项”)

我之前通过向获取的数据添加一个额外选项解决了这个问题,因此我可以模拟将“选择一个选项”作为组合中的有效选项,但我认为应该有更好的方法。

最佳答案

您不需要任何新设计或图形或任何复杂的扩展。 ExtJS 是开箱即用的。

你应该能够使用这个:

Ext.define('Ext.ux.form.field.ClearCombo', {
extend: 'Ext.form.field.ComboBox',
alias: 'widget.clearcombo',

trigger2Cls: 'x-form-clear-trigger',

initComponent: function () {
var me = this;


me.addEvents(
/**
* @event beforeclear
*
* @param {FilterCombo} FilterCombo The filtercombo that triggered the event
*/
'beforeclear',
/**
* @event beforeclear
*
* @param {FilterCombo} FilterCombo The filtercombo that triggered the event
*/
'clear'
);

me.callParent(arguments);

me.on('specialkey', this.onSpecialKeyDown, me);
me.on('select', function (me, rec) {
me.onShowClearTrigger(true);
}, me);
me.on('afterrender', function () { me.onShowClearTrigger(false); }, me);
},

/**
* @private onSpecialKeyDown
* eventhandler for special keys
*/
onSpecialKeyDown: function (obj, e, opt) {
if ( e.getKey() == e.ESC )
{
this.clear();
}
},

onShowClearTrigger: function (show) {
var me = this;

if (show) {
me.triggerEl.each(function (el, c, i) {
if (i === 1) {
el.setWidth(el.originWidth, false);
el.setVisible(true);
me.active = true;
}
});
} else {
me.triggerEl.each(function (el, c, i) {
if (i === 1) {
el.originWidth = el.getWidth();
el.setWidth(0, false);
el.setVisible(false);
me.active = false;
}
});
}
// ToDo -> Version specific methods
if (Ext.lastRegisteredVersion.shortVersion > 407) {
me.updateLayout();
} else {
me.updateEditState();
}
},

/**
* @override onTrigger2Click
* eventhandler
*/
onTrigger2Click: function (args) {
this.clear();
},

/**
* @private clear
* clears the current search
*/
clear: function () {
var me = this;
me.fireEvent('beforeclear', me);
me.clearValue();
me.onShowClearTrigger(false);
me.fireEvent('clear', me);
}
});

这是一个 JSFiddle

还有一个 JSFiddle 没有默认组合。

请注意,这两个示例都不需要任何新图形或样式

关于Extjs4 在组合框中添加一个空选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13830537/

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