javascript - 网格内的 Ext JS 组合框

标签 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
                    })
                }]
            });         
        }
    }

最佳答案

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

关于javascript - 网格内的 Ext JS 组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15153199/

相关文章:

ExtJs 标签文本更改

javascript - CSS 样式不适用于 ExtJS 按钮

javascript - asynctreenode 和 treenode 有什么区别?

javascript - 如何将图像设置在其他图像下?

javascript - JavaScript 中有 URL 类吗?

javascript - 无法更改跨度类的 InnerHTML?

javascript - 通过 JavaScript 自动登录到 Alfresco

javascript - 雪花中的 ARRAY_REMOVE()?

javascript - 有没有办法在 Selenium 版本 4 和更高版本中以 headless 模式执行 UI 测试?

ExtJS 4.1 TreeStore 未加载关联