5

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

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

这会引发异常:

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

这是一个例外:“this.view”为空或不是对象

任何人都知道如何在 ExtJs 中做到这一点?

4

5 回答 5

11

我创建了一个函数来设置 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;
}
于 2012-07-13T19:50:44.820 回答
2

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

于 2012-06-12T16:09:16.023 回答
0

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

function setIndex(combobox, value)
{
    combobox.setValue(combobox.store.data.items[value].data.field1);
}
于 2014-02-04T19:52:13.823 回答
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 }
于 2014-02-18T22:14:16.067 回答
0

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

autoSelect: true

true 选择数据存储收集的第一个结果(默认为 true)。除非 (typeAheadDelay) 的值为 true,否则 false 值将需要从下拉列表中手动选择以设置组件值

于 2021-02-21T01:19:32.823 回答