ExtJS 4:更改组合框中的数据(celleditor)

ExtJS 4: Change data in combobox (celleditor)

本文关键字:数据 celleditor 组合 ExtJS      更新时间:2023-09-26

我使用Ext.form.field.Combobox作为网格面板中的单元格编辑器:

product: {
    xtype         : "anypartfiltercombobox",
    id            : "product-editor",
    store         : new Ext.data.Store({
        model: "Product",
        data: APP.feedbacks.aUserProducts
    }),
    displayField  : "name",
    valueField    : "id",
    queryMode     : "local",
    emptyText     : "Select game",
    allowBlank    : false,
    forceSelection: true,
    listeners     : {
        select: this._onProductChanged
    }
},
device: {
    xtype         : "anypartfiltercombobox",
    id            : "device-editor",
    store         : Ext.create("stores.Devices", {
        storeId: "device-editor-store",
        data   : APP.feedbacks.aProductDevices
    }),
    displayField  : "name",
    valueField    : "id",
    queryMode     : "local",
    emptyText     : "Select device",
    allowBlank    : false,
    autoRender    : true,
    forceSelection: true
}

stores.Devices存储中,我有一个方法loadByProduct(),应该通过更改产品编辑器中的值来使用。

所以this._onProductChanged的来源是:

_onProductChanged = function(oField)
{
    var iProductId = +oField.getValue(),
    oDevicesEditor = Ext.getCmp("device-editor");
    oDevicesEditor.store.loadByProduct(iProductId);
    // Ext.StoresManager.lookUp("device-editor-sore").loadByProduct(iProductId);
}

因此,当我在_onProductChanged中首先更改product-editor值(device-editor尚未激活)时,我得到了Ext.getCmp("device-editor")未定义

但如果device-editor已经打开,然后我更改了一个产品,那么一切都会正常工作。

顺便说一句,我还尝试使用StoresManager和新数据加载来获取存储,但在这种情况下,存储包含新值,组合框显示旧项。

有人能帮我解决问题吗?

谢谢,安德烈。

尝试使用Ext.grid.column.Column.getEditor方法,而不是按id查找编辑器。如果尚未创建编辑器,则此方法应创建编辑器。