как сгруппировать сетку заголовка в extjs? - PullRequest
4 голосов
/ 03 июня 2011

Как сгруппировать заголовок как сетка ниже в extjs:

| -------------- Заголовок A1 ------------ | -------------- B1 Заголовок --------------- |

|---- A2Header --- | --- A3Header --- | ---- B2Header --- | --- B3Header ------ |

| ----- A2Data ------ | ---- A3 Data ------ | ----- B2Данные ------ | ----- B3 Данные ------- |

| ----- A2Data ------ | ---- A3 Данные------ | ----- Данные B2 ------ | ----- Данные B3 ------- |

мой код extjs:

    plColModel = new Ext.grid.ColumnModel([

    new Ext.grid.RowNumberer(),
    { header: "A2Header", dataIndex: 'A2Data' },
    { header: "A3Header", dataIndex: 'A3Data' },
    { header: "B2Header", dataIndex: 'B2Data' },
    { header: "B3Header", dataIndex: 'B3Data' }
        ]);

Ответы [ 3 ]

3 голосов
/ 05 июня 2011

Я помню, как я тратил много времени, пытаясь понять код в примере Sencha, предоставленном для ColumnHeaderGroup.Я сделал 6-уровневый заголовок группы столбцов несколько дней назад, и это не так сложно.

Поместите все ваши заголовки столбцов в объект в качестве ключей объекта для следующих заголовков.Последователи последних заголовков будут свойствами столбцов:

var chstructure = {
    'A1 header' : {
        'A2Header' : {'A2Data' : {'A2Data' : {'dataIndex' : 'A2', 'width' : 100}}},
        'A3Header' : {'A3Data' : {'A3Data' : {'dataIndex' : 'A3', 'width' : 100}}}
    },
    'B1 header' : {
        'B2Header' : {'B2Data' : {'B2Data' : {'dataIndex' : 'B2', 'width' : 100}}},
        'B3Header' : {'B3Data' : {'B3Data' : {'dataIndex' : 'B3', 'width' : 100}}}
    }
};

Вам понадобятся несколько массивов для размещения заголовков: эти массивы будут строками в вашей группе заголовков столбцов.Вам также понадобится массив полей: он будет содержать поля для вашего магазина.Не забудьте инициализировать некоторые переменные colspan (я назову их len n ), которые будут вести подсчет colspan для каждого заголовка столбца (в этом примере 'A1 header' имеет 2 дочерних элемента и 'A2Header' имееттолько 1) и некоторые переменные ширины (wid n ) для ширины каждого заголовка.

var Row1contents = [], Row2contents = [], Row3contents = [], Row4contents = [];
var len1 = 0, len2 = 0, len3=0, wid1 = 0, wid2 = 0, wid3 = 0;
var fields = [];

Теперь вы можете, наконец, проанализировать chstructure, чтобы получить заголовки столбцов.Для этого используйте Ext.iterate:

Ext.iterate (chstructure, function(Row1, Row1structure){
    Ext.iterate (Row1structure, function(Row2, Row2structure){
        Ext.iterate (Row2structure, function(Row3, Row3structure){
            Ext.iterate (Row3contents, function(Row4, Row4structure){
                len1++;len2++;len3++;
                wid1+=Row4structure['width'];
                wid2+=Row4structure['width'];
                wid3+=Row4structure['width'];
                Row4contents.push({
                    dataIndex: Row4structure['dataIndex'],
                    header: Row4,
                    width: Row4structure['width']
                });
                fields.push({
                    type: 'int', // may be 'string'
                    name: Row4structure['dataIndex']
                });
            });
            Row3contents.push({
                header: Row3,
                width: wid3,
                colspan: len3
            });
            len3=wid3=0;
        });
        Row2contents.push({
            header: Row2,
            width: wid2,
            colspan: len2
        });
        len2=wid2=0;
    });
    Row1contents.push({
        header: Row1,
        width: wid1,
        colspan: len1
    });
    len1=wid1=0;
});

Просмотрите 4 массива в консоли и убедитесь, что они содержат все заданные вами данные.Последний шаг - настроить ширину сетки для плагина ColumnHeaderGroup.Используйте свойство

plugins: [new Ext.ux.grid.ColumnHeaderGroup({
    rows: [Row1Group, Row2Group, Row3Group]
});

Установите columns : Row4contents для своей сетки и fields : fields для магазина вашей сетки.

Удачного кодирования!

2 голосов
/ 03 июня 2011

см. Это:

ColumnHeaderGroup

0 голосов
/ 14 июля 2014

Вот один прекрасный пример Сенчи

http://dev.sencha.com/deploy/ext-3.4.0/examples/pivotgrid/people.html

...