#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);
}