【问题标题】:Combobox Items unselectable组合框项目不可选择
【发布时间】:2014-06-02 18:37:36
【问题描述】:

在 ExtJS 中,我的组合框有些奇怪。 组合框已填充,但在某些情况下,除了前 2 个条目之外的所有条目都将被删除。 如果我留在同一页面并在此屏幕上处理新项目(因此将重新加载所有字段以及组合框),组合框现在已完全填充,但运行删除功能。 奇怪的是所有项目都在组合框中,但唯一没有被删除的项目实际上是可选择和可点击的。如果我单击列表中可见的任何其他项目,它就不会做任何事情(即使组合框也不会折叠)。 这可能是什么原因?

我知道你们想要代码,但是发布代码很简单,因为我工作的公司的代码是如此庞大和复杂,以至于在这里粘贴太多。我只是想知道你们中是否有人遇到过类似的事情。

此外,组合框上方还有一个文本框。如果您使用组合框中的值填充文本框,组合框将跳转到正确的值。对于第二次运行(我在上面描述过),如果我输入一个在组合框中可见但不可选择的值,它不会跳转到组合框中的那个值。这些值似乎只是可见的,仅此而已。

编辑:

其他一些奇怪的行为:如果我单击组合框(这样您就可以实际输入文本)并按下任何按钮,组合框将神奇地转换为正确的形式。我的意思是现在只有前两个项目是可见的。我没有任何听众可以在我的组合框上执行此操作...

也许该组合框的“刷新”就足够了?但是,这并不能解释为什么组合框首先表现得那样。在 FF 和 IE 中得到它。

【问题讨论】:

  • 我们了解许多公司拥有的海量数据 - 我们都知道 - 但是,也许您可​​以创建一个新项目,稍微减少数据元素,然后在询问他人之前尝试您想要的在这里寻求帮助。
  • 这几乎是不可能的。组合框由调用 Java 代码的 ajax 调用提供。这是相当巨大的......

标签: javascript extjs combobox


【解决方案1】:

如果没有代码,你说你不能提供,我只能猜测:看看你是否为模型定义了 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 对于所有组合存储记录必须是唯一的。

【讨论】:

  • 那么id和idProperty一样吗?我们使用 ExtJS2.2 顺便说一句。
  • 嗯,在 2.2 中,您没有 Ext.define 和 Ext.create,但首先要查看的是 id - 我的第一个猜测是“非唯一 id”。
  • 感谢您的帮助,但 id 似乎是独一无二的。我在奇怪的行为中注意到的另一件事是在最初的帖子(编辑)中。
  • 那么,如果没有看到代码,我就猜不出更多了。我相信你不能发布实际的组合代码,但你当然可以准备一个没有公司敏感数据的可复制展示。我在 Ext 2.x 中做了很多工作,所以也许我记得当我看到代码时;)
  • 好吧,我会尽力的。顺便说一句,我可能会在下周拿起这个。
【解决方案2】:

最后我通过将商店再次绑定到它的组合框来解决它。在使用 Firebug 进行调试时,我看到商店中只有 2 件商品,而且并非所有商品都可见。 下面是一个简短的例子:

var ddl = Ext.getCmp('DDL');
var ddlStore = ddl.store;

...
//some manipulation of the data here
...

ddlDocType.bindStore(ddlDocTypeStore);

bindStore() 函数在官方文档中没有记录...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多