1

参考网格示例中的组合框。我能够在我的页面中做到这一点。问题是,当我更改其中一个组合框中的值时,同一行中的其余组合框也会更改,它们都具有相同的值。

我只使用了一个 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
                    })
                }]
            });         
        }
    }
4

2 回答 2

1

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

于 2013-03-01T08:17:06.053 回答
0

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

于 2013-03-04T03:15:30.717 回答