I found a bug in the method buildHeaders of Ext.grid.PivotAxis. Look at the following code snapshot:


/* * 'changed' indicates that we need to create a new cell. This should be true whenever the cell * above (previousHeader) is different from this cell, or when the cell on the previous dimension * changed (e.g. if the current dimension is Product and the previous was Person, we need to start * a new cell if Product is the same but Person changed, so we check the previous dimension and tuple) */ changed = previousHeader != undefined && previousHeader != currentHeader; if (i > 0 && j > 0) { changed = changed || tuple.data[dimensions[i-1].dataIndex] != tuples[j-1].data[dimensions[i-1].dataIndex]; }
I think it is not enough just to check previous dimension. Instead all the preceding dimensions should be compared. So my fix is like below:

isPrecedingChanged : function(tuples,dimensions,currentCol,currentRow){
var changed = false;
for(var col= currentCol; col>0; col--){
if(tuples[currentRow].data[dimensions[col-1].dataIndex]!=tuples[currentRow-1].data[dimensions[col-1].dataIndex]){
changed = true;
break;
}
}
return changed;
},
…..
changed = previousHeader !== undefined && previousHeader != currentHeader;
if (i > 0 && j > 0) {
changed = changed || me.isPrecedingChanged(tuples,dimensions,i,j);
}
…..