如何在ExtJs中选择组合框值?

时间:2012-06-12 15:42:36

标签: extjs extjs3

我试图在将其加载到商店后简单地在下拉列表中选择一个项目。这不起作用:

Ext.getCmp('ddlModel').setValue(aircraftStore.getAt(0).data.ModelTypeCode);

这会引发异常:

Ext.getCmp('ddlModel').selectByValue(aircraftStore.getAt(0).data.ModelTypeCode);

以下是例外情况: 'this.view'为null或不是对象

任何人都知道如何在ExtJs中执行此操作?

5 个答案:

答案 0 :(得分:9)

我创建了一个函数来设置ExtJs中的组合框的值:

function ComboSetter(comboBox, value) {
    var store = comboBox.store;
    var valueField = comboBox.valueField;
    var displayField = comboBox.displayField;

    var recordNumber = store.findExact(valueField, value, 0);

    if (recordNumber == -1)
        return -1;

    var displayValue = store.getAt(recordNumber).data[displayField];
    comboBox.setValue(value);
    comboBox.setRawValue(displayValue);
    comboBox.selectedIndex = recordNumber;
    return recordNumber;
}

答案 1 :(得分:2)

Ext.getCmp('ddlModel').select(aircraftStore.getAt(0));

答案 2 :(得分:0)

在许多情况下,您可能希望将组合框设置为某个索引。在ExtJs 4.2中你可以这样做:

function setIndex(combobox, value)
{
    combobox.setValue(combobox.store.data.items[value].data.field1);
}

答案 3 :(得分:0)

在我的情况下,我需要得到组合框的id,然后在if中进行比较,从而能够通过第二个窗口,使用此方法并且它有效。

var ValorSeleccionado = Ext.getCmp('cmb_tipoderol_usr').getValue(); // 'cmb_tipoderol_usr' is the id of the combobox.

然后与行动进行比较

if (ValorSeleccionado == 1 ) { Do Action }

答案 4 :(得分:0)

我认为正确的方法是使用此属性配置组合框:

autoSelect: true
<块引用>

true 选择数据存储收集的第一个结果(默认值 为真)。错误值需要从 下拉列表设置组件值,除非值 (typeAheadDelay) 为真