【问题标题】:ExtJS 4: Change data in combobox (celleditor)ExtJS 4:更改组合框中的数据(单元编辑器)
【发布时间】:2012-03-18 19:51: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(),应该通过在product 编辑器中更改值来使用它。

所以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 获取存储并加载新数据,但在这种情况下,存储包含新值,组合框显示旧项目。

有人可以帮我解决吗?

谢谢, 安德烈。

【问题讨论】:

    标签: javascript combobox extjs4 store


    【解决方案1】:

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

    【讨论】:

    • 非常感谢!!我花了很多时间寻找这个,每次我查看Ext.grid.column.Column APIs 页面时都错过了这个方法。
    猜你喜欢
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多