Как получить значения из Extjs getUpdatedRecords()?

#extjs #extjs4 #store

#extjs #extjs4 #Магазин

Вопрос:

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

 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.id

введите описание изображения здесь

Ответ №1:

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

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

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

Также есть более простой способ сделать это, а также более практичный. Щелчок события редактирования строки принимает два параметра: редактор и объект 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);
}