Прежде всего, я использую 6.2 версию extjs framework.
У меня возникла проблема с сохранением новых записей с помощью сетки ext.js с плагином «Ext.grid.plugin.RowEditing».
Когда пытаюсь сохранить запись, так как у строки нет выпадающего списка в редакторе, то работает нормально.
Однако когда я добавляю поле со списком в редактор строк, возникает следующая ошибка:
Не удается прочитать свойство «mergeAttributes» с нулевым значением
Проверив код фреймворка extjs, я заметил, что ошибка возникает при выходе из редактора и заполнении строки измененным содержимым.
Это происходит в следующем разделе файла Table.js:
cellSelector = me.getCellSelector(column);
oldCell = oldRow.selectNode(cellSelector);
newCell = newRow.selectNode(cellSelector);
// Copy new cell attributes across. Use IE-specific method if possible.
if (oldCell.mergeAttributes) {
oldCell.mergeAttributes(newCell, true);
} else {
newAttrs = newCell.attributes;
attLen = newAttrs.length;
for (attrIndex = 0; attrIndex < attLen; attrIndex++) {
attName = newAttrs[attrIndex].name;
if (attName !== 'id') {
oldCell.setAttribute(attName, newAttrs[attrIndex].value);
}
}
}
По сути, переменная «oldCell» не заполняется «oldRow.selectNode (cellSelector)».
В первый столбец я помещаю невидимый столбец, содержащий идентификатор записи. Эта ячейка заполняется, однако любая другая ячейка, имеющая поле со списком или нет, возвращает «oldCell» как нуль.
Просто чтобы обеспечить, когда я удаляю все поля со списком из редактора, это работает.
Это также справедливо только для новых записей.