Всем доброго времени суток!
Я создал Ext.grid.column.Widget в beforerender событие Ext.grid.Panel компонента:
var column = Ext.create('Ext.grid.column.Widget', {
text : '...',
width : 200,
onWidgetAttach: function(column, widget, record) {
// simple operations
},
widget: {
xtype : 'button',
text : '...',
listeners: {
click: function(me, event, eOpts) {
// simple operations
}
}
}
});
Затем я присоединяю это к основному компоненту Ext.grid.Panel:
grid.headerCt.insert(2, column);
На этом этапе все хорошо, столбец с кнопками показывается и работает хорошо, но...
Существует некоторая дополнительная функциональность - окно открывается при нажатии на другую ячейку (gridcolumn), оно использует ViewController и на onCellclick оно вызывает:
record.callJoined('afterCommit', [fieldName]);
А затем сбой:
Трассировка показывает, что здесь происходит сбой (ext-all-rtl-debug.js):
updateColumns: function(oldRow, newRow, columnsToUpdate, record) {
...
// Replace changed cells in the existing row structure with the new version
// from the rendered row.
for (colIndex = 0; colIndex < colCount; colIndex++) {
column = columnsToUpdate[colIndex];
// Pluck out cells using the column's unique cell selector.
// Because in a wrapped row, there may be several TD elements.
cellSelector = me.getCellSelector(column);
oldCell = oldRow.querySelector(cellSelector);
newCell = newRow.querySelector(cellSelector);
// Copy new cell attributes across.
newAttrs = newCell.attributes; // HERE IS THE CLUE????
attLen = newAttrs.length;
for (attrIndex = 0; attrIndex < attLen; attrIndex++) {
attName = newAttrs[attrIndex].name;
value = newAttrs[attrIndex].value;
if (attName !== 'id' && oldCell.getAttribute(attName) !== value) {
oldCell.setAttribute(attName, value);
}
}
console.log(newCell.attributes)
показывает такие атрибуты gridcolumn:
Но в столбце виджета кажется, что атрибуты переменная равна нулю.
Я заметил, что gridМассив .columns содержит только gridcolumns и не содержит widgetcolumn.
Что мне нужно сделать, чтобы устранить ошибку?
Это огромныйпроект с динамическим конструктором сетки, поэтому я не могу создать его в скрипке.