Ext JS Combobox在网格内

时间:2013-03-01 08:08:34

标签: javascript extjs

参考Combobox inside a grid示例。我能够在我的页面中执行此操作。问题是,当我更改其中一个组合框中的值时,同一行中的其余组合框也会发生变化,它们都具有相同的值。

我只使用javascript和基本的html和ext js。我正在使用ext沙箱(ext4)。

任何帮助?

if(columnData != undefined){
        for (var i = 0; i < columnData.length; i++) 
        {

            var storedata = [];     
            for(var gr = 0;gr < gridData.itemData[0][0].length;gr++){           
                storedata.push([(gr + 1),gridData.itemData[0][0][gr]]);         
            }

            var comboRenderer = function(combo) {                    
                return function(value) {
                    alert(value);
                    alert(combo.valueField);
                    var idx = combo.store.find(combo.valueField, value);                        
                    if ( idx < 0 ) {
                        idx = 0;            
                    }                       
                    var rec = combo.store.getAt(idx);               
                    return rec.get(combo.displayField);                  
                  };
            };

            fields.push({name:columnData[i].name});             
            columns.push({text:columnData[i].name, width: 140, menuDisabled: true, sortable: false, align: 'center', forcefit: true, 
                columns: [{                 
                    text: 0,
                    draggable: false,
                    hideable: false,
                    flex: 1,
                    width: 140,
                    dataIndex: columnData[i].name,
                    menuDisabled: true, 
                    sortable: false, 
                    align: 'center',
                    editable: true,
                    renderer: comboRenderer(new Ext4.form.ComboBox({
                        id: i.toString(),
                        typeAhead: true,
                        triggerAction: 'query',
                        mode: 'queryMode',
                        autoSelect : false,
                        autoShow : true,
                        emptyText : 'Select item',
                        store: new Ext4.data.ArrayStore({
                            fields: ['id' + i, 'description' + i],
                            data : storedata
                            }),
                        displayField:'description' + i,
                        valueField: 'id' + i,
                        forceSelection: false
                    })),
                    editor: new Ext4.form.ComboBox({
                        id: i.toString(),
                        typeAhead: true,
                        triggerAction: 'query',
                        mode: 'queryMode',
                        autoSelect : false,
                        autoShow : true,
                        emptyText : 'Select item',
                        store: new Ext4.data.ArrayStore({
                            fields: ['id' + i, 'description' + i],
                            data : storedata
                            }),
                        displayField:'description' + i,
                        valueField: 'id' + i,
                        forceSelection: false
                    })
                }]
            });         
        }
    }

2 个答案:

答案 0 :(得分:1)

他们都共享同一家商店。您需要为每个组合框创建商店的副本。

答案 1 :(得分:0)

不知何故,我只需要清除缓存以使我的更新正常工作。 tnx @ A1rPhun