extjs组合显示值

Posted

技术标签:

【中文标题】extjs组合显示值【英文标题】:extjs combo display value 【发布时间】:2011-02-02 16:52:14 【问题描述】:

在 ext js 中,当我有一个组合时,有显示值和值(发送到服务器)。我不需要 displayValue 发送到服务器,但我需要在页面上捕获它并显示警报。 这样做的eextjs方法是什么? combo.getValue() 将返回基础价值...我没有看到任何 combo.getDisplay()

编辑:澄清一下,我希望获取用户选择的项目的显示值。我希望在 onselect 或 changeevent 上显示警报。

【问题讨论】:

【参考方案1】:

如果您将组合框上的 valueField 属性设置为您希望在警报中显示的值,则可以正常工作。

alert(combo.getValue());

如果您希望此值与您提交给服务器的值不同,则必须从组合框中获取商店并找到相应的记录。

var store = combo.getStore();
var index = store.find('*YourFieldName*', combo.getValue());
if(index != -1)//the record has been found
  
      var record = store.getAt(index);
      //you can then do what you like with the record.
  

【讨论】:

+1 但您并不真正需要“如果”条件。 (如果你能想到一个你需要它的案例,我想知道!) 如果您从 combo.getValue() 方法返回的值不在存储中。假设用户在组合框中输入了一个值,或者它是从其他地方设置的,那么该值可能不在存储中并且索引将为 -1,从而导致代码错误。 你是对的......但是......由于他有不同的值和显示字段,允许用户输入不在商店中的任意值并不是最有意义的,但从技术上讲,你是对的. "store" 实际上是作为渲染器参数的一部分传入的,因此您不需要定义它。【参考方案2】:
 combo.getStore().getById(combo.getValue()).raw.displayAttribute //Ext 4.x, 
 //displayAttribute: displayField or displayed attrib in store data for the combo

【讨论】:

【参考方案3】:

我们可以检索底层存储,然后使用我们的值作为键来获取显示值。

类似这样的东西(我还没有测试过):

var displayValue = combo.getStore()[combo.getValue()]

【讨论】:

【参考方案4】:

我们可以像这样得到组合框显示值...

getRawValue( ) : 字符串 返回组合的原始字符串值,不执行任何规范化、转换或验证。如果字段已呈现,则获取输入元素的当前值,如果是 emptyText,则忽略该值。

combo.getRawValue();

【讨论】:

【参考方案5】:

假设您的组合框中有以下内容:

id: 'COMBOBOX_ID', displayField: 'COMBOBOX_DIS_FIELD_NAME', 值字段:'COMBOBOX_VAL_FIELD_NAME'

然后,您可以执行以下操作:

var combo = Ext.getCmp('COMBOBOX_ID');
var comboStore = combo.getStore();
var index = comboStore.find('COMBOBOX_VAL_FIELD_NAME', combo.getValue());
if(index != -1)

  var selectedItemDisplayValue = combo.getStore().getAt(index).get('COMBOBOX_DIS_FIELD_NAME');

【讨论】:

以上是关于extjs组合显示值的主要内容,如果未能解决你的问题,请参考以下文章

如何让组合框选择与 ExtJS6 中显示的值不同的值?

ExtJS Combobox Rowediting在单击更新后不显示最新值

ExtJS 动态更改组合框项的值

extjs:加载时如何设置组合框的值

ExtJS 组合框:值字段在 postdata 中不可用

在 extjs 网格中只为一行添加组合框