【问题标题】:EXTJS 6 : Set ComboBox's value when its store is emptyEXTJS 6 : 当 ComboBox 的 store 为空时,设置 ComboBox 的值
【发布时间】:2016-03-27 19:02:11
【问题描述】:

我正在开发一个 extjs 6 应用程序,最近发现当 ComboBox 的存储不包含 valueFiled 等于 @987654325 的记录时,无法使用 setValue(value) 方法设置 ComboBox 的值@ 如此处所述 http://docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/Ext.form.field.ComboBox-method-setValue.

所以我的问题是,当 ComboBox 的存储为空(或不包含 valueFiled 等于 value 的记录)时,是否有其他方法可以更改 ComboBox 的值?

【问题讨论】:

  • 试试select()方法。
  • 我不明白...根据文档select( combo, record, eOpts ) 至少选择一个列表项时触发我的商店中没有任何元素(它是空的)所以是项目列表......此外,此方法不用于更改值
  • 我认为select() 方法(不是事件)不会起作用,因为在代码中该方法只是在内部调用setValue()。当没有可供选择的值列表时,为什么要尝试设置值?也许您可以使用emptyText 配置在未设置时显示一个值?
  • 实际上,这是使用 extjs 1 开发的旧功能行为,我正在尝试迁移到版本 6。在该版本中,无论商店的状态如何,我们都可以为组合框设置任何值。对于emptyText ,这不是一个解决方案,因为要设置为comboxBox 的值会根据之前选择的其他值而变化...

标签: javascript extjs combobox extjs6


【解决方案1】:

你想要 setRawValue() 而不是 setValue()

【讨论】:

  • 我最终使用了这种方法,但是在使用它之前,我必须检查我的商店是否为空或不包含valueFiled 等于value 的记录。像这样的东西` if (item && item instanceof Ext.form.field.ComboBox && item.getStore().getData().length === 0) { item.setRawValue(value); } else { item.setValue(value); }`
【解决方案2】:

你想错了。请查看https://fiddle.sencha.com/#fiddle/12t4,我可以毫无问题地使用它。

请检查您是否可能在组合中设置了forceSelection: true,因为这会导致您描述的行为。

【讨论】:

  • 实际上您的示例是错误的(与我的问题相比),只需将valueField : 'attribute' 添加到您的comboxBox 中,您的示例将不再起作用...fiddle.sencha.com/fiddle/12t4。关于forceSelection,默认保留(false)...
  • 我在示例中添加了valueField: 'attribute'。我没有看到行为有任何变化。它仍在工作。
  • 对不起,我给你错误的链接,检查这个fiddle.sencha.com/#fiddle/12to
  • 我正在尝试将您的代码与您的问题相匹配。你的问题显然不完整。
猜你喜欢
  • 2011-06-10
  • 2013-06-21
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多