在 ExtJS 中,我的组合框有一些相当奇怪的东西。 组合框已填充,但在某些情况下,除了前 2 个条目之外的所有条目都会被删除。 如果我停留在同一页面上并处理此屏幕上的新项目(因此将重新加载所有字段和组合框),则组合框现在已完全填充,但运行了删除功能。 奇怪的是,所有项目都在组合框中,但唯一未删除的项目实际上是可选择和可单击的。如果我单击列表中可见的任何其他项目,它不会执行任何操作(甚至组合框也不会折叠)。 可能是什么原因造成的?
我知道你们想要代码,但是发布代码是不可能的,因为我工作的公司的代码是如此巨大和复杂,以至于有太多的东西可以粘贴到这里。我只是想知道你们中是否有人遇到过类似的事情。
此外,组合框上方还有一个文本框。如果您使用组合框中的值填充文本框,组合框将跳转到正确的值。在第二次运行(我上面描述的)中,如果我输入一个在组合框中可见但不可选择的值,它不会跳转到组合框中的该值。看起来这些值只是可见的,但仅此而已。
编辑:
其他一些奇怪的行为:如果我单击组合框(这样您就可以实际键入文本)并按任何按钮,组合框将神奇地转换为正确的形式。我的意思是现在只有前两个项目可见。我没有任何监听器可以在我的组合框中执行此操作...
也许“刷新”该组合框就足够了?然而,这并不能解释为什么组合框首先会有这样的行为。在 FF 和 IE 中都可以使用。
最佳答案
没有代码,你说你不能提供,我只能猜测:看看你是否为模型定义了 idProperty,以及 idProperty 是否与其中一个字段匹配,组合的 valueField 是否与 idProperty 的值相同,并且如果您从服务器收到具有唯一 ID 的记录,则最后一次。组合配置应类似于以下内容:
Ext.define('ComboModel',{
extend:'Ext.data.Model'
,idProperty:'custId'
,fields:[
{name:'custId', type:'int'}
,{name:'custName', type:'string'}
]
});
Ext.define('ComboStore',{
extend:'Ext.data.Store'
,model:'ComboModel'
});
Ext.create('Ext.form.field.ComboBox',{
store:Ext.create('ComboStore')
,valueField:'custId'
,displayField:'custName'
});
当然,您很可能需要上述类的附加配置选项。对于所有组合商店记录,custId
必须是唯一的。
关于javascript - 组合框项目不可选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23915872/