2013-07-26 52 views
1

我有一个带有列的可编辑网格面板,我想在按下applyToAll按钮时将列中每个单独的值更改为相同的值。似乎没有任何api调用可以让我获得列中的所有值,甚至可以获得网格面板中的所有值。如何更改extjs中特定列中的所有值?

//Model that defines my column named fileName 
var colModel = new Ext.grid.ColumnModel([{ 
    header:'File Name', 
    dataIndex:'fileName' 
    } 
]); 

// Editable grid panel: 
var myGrid = new Ext.grid.EditorGridPanel({   
    store: store, 
    colModel: colModel, 
    clicksToEdit: 1, 
    autoWidth: true, 
    autoHeight: true 
}); 

// Button that changes all the column names 
var applyToAll = new Ext.Button({ 
    text: "Apply to All", 
    handler: function(){ 
    var record = myGrid.getSelectionModel().getSelected(); 

    //Change the values of the column here somehow. 

    } 
}); 

//Form which holds everything 
var gridForm = new Ext.FormPanel({ 
    id: 'mainForm', 
    frame: true, 
    items: [{ 
    columnWidth: 0.6, 
    layout: 'fit', 
    items: [myGrid], 
    buttons: [applyToAll] 
}); 

当我单击applyToAll按钮时,如何更改列中的所有值?

回答

3

要知道选择哪个单元格,请使用CellSelection模型

var myGrid = new Ext.grid.EditorGridPanel({   
    // ... 
    selModel: new Ext.grid.CellSelectionModel(), 
    // ... 
}); 

然后你就可以调用储存的每一条记录并更改所需的值:

// Button that changes all the column names 
var applyToAll = new Ext.Button({ 
    text: "Apply to All", 
    handler: function(){ 
     var record = myGrid.getSelectionModel().getSelected(); 
     var row = myGrid.getSelectionModel().getSelectedCell()[0]; 
     var col = myGrid.getSelectionModel().getSelectedCell()[1]; 
     var column_name = myGrid.getColumnModel().getColumnAt(col).dataIndex; 


     myGrid.getStore().each(function(rec){ 
      rec.set(column_name, myGrid.getStore().getAt(row).get(column_name)); 
     }); 
    } 
}); 
0

我最终什么事做:

var myGrid = new Ext.grid.EditorGridPanel({ 
    //... 
    //I needed RowSelectionModel for another portion of my code 
    selModel: new Ext.grid.RowSelectionModel() 
    //... 
)}; 

var applyToAll = new Ext.Button({ 
    text: "Apply to All", 
    handler: function(){ 
    var record = myGrid.getSelectionModel().getSelected(); 
    myGrid.stopEditing(); 

    var gridStore = myGrid.getStore(); 
    var records = gridStore.getRange(0, gridStore.getTotalCount()); 

    for(var ii=0; ii<records.length; ii++){ 
     var curRecord = records[ii]; 
     curRecord.set('testCell', record.get('testCell')); 
    } 

    gridStore.removeAll(true); 
    gridStore.add(records); 

    myGrid.startEditing(0, 0); 
    } 
}); 
相关问题