2013-03-01 81 views
1

参照Combobox inside a grid的例子。我能够在我的页面中做到这一点。问题是,当我在其中一个组合框中更改值时,同一行中组合框的其余部分也发生更改,它们都具有相同的值。Ext JS Combobox在网格内

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

回答

1

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

+0

嗨。我做到了。请参阅我的问题中的更新。但仍然是同样的行为 – 2013-03-04 03:03:06

0

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