2013-07-26 3 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); 
    } 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^