网格内的组合框在渲染后不显示数据

时间:2014-08-14 23:03:29

标签: combobox grid extjs4.2 roweditor

我有一个在一列上有组合框的网格。数据在网格上加载正常。但是,当我双击一行以启用编辑时,组合框不会显示数据。 (请参阅下面的屏幕截图)突出显示的部分应显示' 1st Label'。但是当我开始编辑时,它会像第二行中的第二个标签一样显示出来。

我在4.1上尝试了我的代码并且工作正常。似乎4.2.2不喜欢网格内的组合框。任何帮助都非常感谢

enter image description here

这是我的示例代码。请在Sencha的代码编辑器上尝试查看4.2.2和4.1.0

        Ext.define('GridModel', {
        extend: 'Ext.data.Model',
        fields: [{
            name: 'Id',
            type: 'int'
        }, {
            name: 'Value',
            type: 'int'
        }]
    });

    Ext.define('ComboModel', {
        extend: 'Ext.data.Model',
        fields: [{
            name: 'ComboId',
            type: 'int'
        }, {
            name: 'Label',
            type: 'string'
        }],
        idProperty: 'Order'
    });

    Ext.create('Ext.data.Store', {
        storeId: 'comboStore',
        model: 'ComboModel',
        data: [{
            ComboId: 1,
            Label: '1st Label'
        }, {
            ComboId: 2,
            Label: '2nd Label'
        }]
    });

    Ext.create('Ext.data.Store', {
        storeId: 'gridStore',
        model: 'GridModel',
        data: [{
            Id: 1,
            Value: 1
        }, {
            Id: 2,
            Value: 2
        }, {
            Id: 3,
            Value: 1
        }, {
            Id: 4,
            Value: 2
        }]
    });

    Ext.create('Ext.grid.Panel', {
        width: 400,
        height: 200,
        renderTo: 'ct',
        plugins: [
            Ext.create('Ext.grid.plugin.RowEditing', {
                clicksToEdit: 2,
                listeners: {
                    edit: function(editor, e) {
                        console.log(gridStore.getModifiedRecords());
                    }
                }
            })
        ],
        store: Ext.data.StoreManager.lookup('gridStore'),
        forceFit: true,
        columns: [{
            dataIndex: 'Id',
            header: 'ID'
        }, {
            dataIndex: 'Value',
            header: 'Label',
            editor: {
                xtype: 'combobox',
                displayField: 'Label',
                valueField: 'ComboId',
                queryMode: 'local',
                store: Ext.data.StoreManager.lookup('comboStore'),
                allowBlank: true
            },
            renderer: function(value) {
                var rec = comboStore.getById(value);
                return rec ? rec.get('Label') : value;
            }
        }],
        renderTo: Ext.getBody()
    });

0 个答案:

没有答案