ExtJS ComboBox手动输入非列表值时自动清空无法保存问题
解决方案
要解决ComboBox作为EditorGridPanel编辑器时,输入自定义值被自动清空的问题,只需调整ComboBox的核心配置并优化渲染逻辑:
- 关闭强制选择限制
默认情况下,ExtJS的ComboBox会强制用户选择store中已有的选项(forceSelection默认值为true),添加forceSelection: false配置即可允许输入任意自定义值:
this.assignFieldEditor = new Ext.form.ComboBox({ id: 'assignFieldEditor', name: "assignFieldEditor", fieldLabel: 'Assign Field', store: new Ext.data.SimpleStore({ fields: ["name"], data: [....someListThatRenderedByRequest] }), editable: true, valueField: "name", displayField: "name", mode: 'local', triggerAction: 'all', width: 180, forceSelection: false // 新增配置,允许自定义输入值 });
- 优化渲染逻辑
若原有typeRenderer仅渲染store中存在的选项,需调整逻辑确保自定义值能正常显示。可替换为以下渲染函数:
renderer: function(value) { // 优先匹配store选项,无匹配时直接返回输入的自定义值 var record = this.assignFieldEditor.store.findRecord('name', value); return record ? record.get('name') : value; }.bind(this)
修改完成后,输入不在store列表中的自定义值时,输入框不会自动清空,值会被正常保存并显示在网格单元格中。
内容的提问来源于stack exchange,提问作者Guy Cohen
相关产品推荐
相关产品推荐

