在ExtJS中,我的组合框很奇怪。 组合框已填充,但在某些情况下,除了2个第一个条目之外的所有条目都被删除。 如果我停留在同一页面上并在此屏幕上处理新项目(因此将重新加载所有字段并因此组合框),现在完全填充了组合框,但是运行了删除功能。 奇怪的是,所有物品都在组合框中,但是唯一没有被移除的物品实际上是可选择和可点击的。如果我点击列表中可见的任何其他项目,它就不会做任何事情(即使组合框也不会崩溃)。 可能是什么原因造成的?
我知道你们想要代码但是发布代码很简单,因为我工作的公司的代码是如此庞大和复杂,以至于在这里粘贴太多了。我只是想知道你们中间是否有类似的东西。
此外,文本框位于组合框上方。如果要使用组合框中的值填充文本框,组合框将跳转到正确的值。在第二次运行(我在上面描述)中,如果我键入一个在组合框中可见但无法选择的值,它将不会跳转到组合框中的该值。看起来这些值只是可见但是就是这样。
编辑:
其他一些奇怪的行为:如果我点击组合框(这样你实际上可以输入文字)并按下任何按钮,组合框将被神奇地转换为正确的形式。我的意思是现在只有2个第一项可见。我没有任何听众能在我的组合框上做到这一点...
也许是"刷新"那个组合框就够了吗?但是,这并不能解释为什么组合框首先表现出那种方式。在FF和IE中得到它。
答案 0 :(得分:1)
如果没有代码,你说你无法提供,我只能猜测:看看你是否为模型定义了idProperty,如果idProperty匹配其中一个字段,如果组合的valueField与idProperty的值相同,如果您从服务器接收具有唯一ID的记录,则为last。组合配置应该类似于:
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
对于所有组合商店记录必须是唯一的。
答案 1 :(得分:0)
最后,我通过再次将商店绑定到它的组合框来解决它。在使用Firebug进行调试时,我发现商店中只有2个项目,而不是所有可见的项目。 下面是一个简短的例子:
var ddl = Ext.getCmp('DDL');
var ddlStore = ddl.store;
...
//some manipulation of the data here
...
ddlDocType.bindStore(ddlDocTypeStore);
bindStore()函数未在官方文档中记录...