1

グリッドの例の中のコンボボックスを参照してください。私は自分のページでこれを行うことができました。問題は、コンボボックスの1つで値を変更すると、同じ行の残りのコンボボックスも変更され、すべて同じ値になることです。

私はこれでjavascriptと基本的なhtmlとextjsだけを使用しています。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 に答える