After upgrading to GXT 2.3.0 the headings on our grids are out of order when some columns have header groups and others do not. It appears that all the headers with groups are being moved before the columns without headers groups.

A workaround we are doing for now is to add header groups to all the columns.

Here is a simple test case to illustrate the issue:

Code:
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;


public class ColumnGroupingBugExample implements EntryPoint {


    public void onModuleLoad() {
        List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
        configs.add(new ColumnConfig("1", "1", 100));
        configs.add(new ColumnConfig("2", "2", 100));
        configs.add(new ColumnConfig("3", "3", 100));
        configs.add(new ColumnConfig("4", "4", 100));
        configs.add(new ColumnConfig("5", "5", 100));
        
        ListStore<ModelData> store = new ListStore<ModelData>();
        ModelData testData = new BaseModelData();
        testData.set("1", "1");
        testData.set("2", "2");
        testData.set("3", "3");
        testData.set("4", "4");
        testData.set("5", "5");
        store.add(testData);


        ColumnModel cm = new ColumnModel(configs);
        cm.addHeaderGroup(0, 0, new HeaderGroupConfig("1-2 Header", 1, 2));
//        cm.addHeaderGroup(0, 2, new HeaderGroupConfig("3 Header", 1, 1));
        cm.addHeaderGroup(0, 3, new HeaderGroupConfig("4-5 Header", 1, 2));
        
        Grid<ModelData> grid = new Grid<ModelData>(store, cm);
        grid.setSize(520, 100);
        
        RootPanel.get().add(grid);
    }
}
headerMismatch.jpg

Heading 3 should be in the middle but it is shown at the end.