View Full Version : [FIXED] assignment to 'itemId' in grid column break Update in RowEditing plugin

Alexei Ptitchkin
6 Dec 2013, 7:02 AM
It turn out that custom assignment to 'itemId' in grid column break edit/Update in RowEditing plugin (version.name=ext-

,{text: 'Jan', width:50, itemId:'0/0', dataIndex : 'CF1' ,editor : {xtype : 'numberfield' }}
had to be changed to

,{text: 'Jan', width:50, fastItemId:'0/0', dataIndex : 'CF1' ,editor : {xtype : 'numberfield' }}

otherwise onUpdate handler can't find cells to update causing


updateColumns: function(record, oldRowDom, newRowDom, columns, changedFieldNames) {
cellSelector = me.getCellSelector(column);
oldCell = Ext.DomQuery.selectNode(cellSelector, oldRowDom);
newCell = Ext.DomQuery.selectNode(cellSelector, newRowDom);
oldCell and newCell is undefined
// If an editor plugin is active, we carefully replace just the *contents* of the cell.
if (isEditing) {

Seems to me that internal plugin implementation should not rely on public property.
Should such politely named "feature" be at least properly documented?!

6 Dec 2013, 10:20 AM
Thanks for the report! I have opened a bug in our bug tracker.

6 Dec 2013, 11:03 AM
This isn't related to it having any itemId, rather, it's specifically the itemId you're giving it. Things like ids typically get flushed to the DOM at some point.

The docs could use some notes that indicate you should stick to id/itemId that are acceptable as DOM ids.

Alexei Ptitchkin
6 Dec 2013, 11:44 AM
"We encourage you to continue the discussion and to find an acceptable workaround while we work on a permanent fix." (c)

The reason why I get into this problem was that I needed dynamic header's text. So I've follow suggestion to use itemId, which were work fine everywhere else. Once I realize what was cause the problem I've change name for id property and search headers with my app-specific Id.

7 Dec 2013, 2:15 AM
This would work but, it highlights another bug with querying of detached elements.

viewConfig: {
getCellSelector: function(header) {
var result = this.cellSelector,
if (header) {
nth = header.getIndex() + 1;
result += ':nth(' + nth + ')';
return result;