Как получить значения из Extjs getUpdatedRecords ()? - PullRequest
0 голосов
/ 24 октября 2011

Когда я пытаюсь получить только grid.getStore().getUpdatedRecords(), он работает просто отлично, но при попытке ввести этот объект и извлечь данные из (данных), я получаю не определено

plugins: [
    Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToMoveEditor: 1,
        listeners: {
            'edit': function () {

                    var grid = Ext.getCmp('dataGrid');
                    var editedRecords = grid.getStore().getUpdatedRecords(); // <---- OK
                  //var editedFirstName = editedRecords.data.FirstName;
                  //console.log(editedFirstName);
                    console.log(editedRecords);
                }

         }
    })
]


Вот мой Firebug, показывающий, что этот объект имеет data.FirstName, data.LastName, data.id


enter image description here

1 Ответ

3 голосов
/ 24 октября 2011

getUpdatedRecords возвращает массив измененных записей. Так что твой код должен быть ...

var grid = Ext.getCmp('dataGrid');
var editedRecords = grid.getStore().getUpdatedRecords(); // <---- OK
var editedFirstName = editedRecords[0].data.FirstName;

Учитывая, что вы обновляете запись после каждого редактирования, в противном случае метод вернет также другие предыдущие измененные записи.

Также есть более простой способ сделать это, а также более практичный. Событие редактирования строки click принимает два параметра - редактор и объект e, который содержит:

grid - The grid this editor is on
view - The grid view
store - The grid store
record - The record being edited
row - The grid table row
column - The grid Column defining the column that initiated the edit
rowIdx - The row index that is being edited
colIdx - The column index that initiated the edit

Итак, ваш код должен быть

'edit': function (editor,e) {
     var grid = e.grid;
     var record = e.record;
     console.log(record.data.FirstName);
}
...