Как поставить выпадающий список в заголовке панели ExtJS? - PullRequest
5 голосов
/ 28 февраля 2011

Я могу поместить элементы HTML, такие как текст и изображения, в заголовок панели следующим образом:

var grid = new Ext.grid.GridPanel({
    region: 'center',
    style: 'margin: 10px',
    store: new Ext.data.Store({
        data: myData,
        reader: myReader
    }),
    headerCfg: {
        tag: 'div',
        cls: 'x-panel-header',
        children: [
            { tag: 'div', cls: 'panel_header_main', 'html': 'Shopping Cart' },
            { tag: 'div', cls: 'panel_header_icon1', 'html': '<img src="images/icon_plus.png" />' },
            { tag: 'div', cls: 'panel_header_icon2', 'html': '<img src="images/icon_pencil.png" />' },
            { tag: 'div', cls: 'panel_header_extra', 'html': 'Order Number: 2837428347' }
        ]
    },

, который выглядит хорошо:

enter image description here

но когда я добавляю выпадающий элемент, который не является простым HTML, вот так:

var grid = new Ext.grid.GridPanel({
    region: 'center',
    style: 'margin: 10px',
    store: new Ext.data.Store({
        data: myData,
        reader: myReader
    }),
    headerCfg: {
        tag: 'div',
        cls: 'x-panel-header',
        children: [
            { tag: 'div', cls: 'panel_header_main', 'html': 'Shopping Cart' },
            { tag: 'div', cls: 'panel_header_icon1', 'html': '<img src="images/icon_plus.png" />' },
            { tag: 'div', cls: 'panel_header_icon2', 'html': '<img src="images/icon_pencil.png" />' },
            { tag: 'div', cls: 'panel_header_extra', 'html': 'Order Number: 2837428347' },
            {
                width:          100,
                xtype:          'combo',
                mode:           'local',
                value:          'en',
                triggerAction:  'all',
                forceSelection: true,
                editable:       false,
                fieldLabel:     'Produkt',
                name:           'language',
                hiddenName:     'language',
                displayField:   'name',
                valueField:     'value',
                store:          new Ext.data.JsonStore({
                    fields : ['name', 'value'],
                    data   : [
                        {name : 'German',   value: 'de'},
                        {name : 'English',  value: 'en'},
                        {name : 'French', value: 'fr'}
                    ]
                })
            }
        ]
    },

выводит скрипт в заголовок: enter image description here

Можно ли даже поместить не-HTML элемент внутри заголовка панели? Если да, то как это делается?

Ответы [ 3 ]

4 голосов
/ 28 февраля 2011

Возможно, вам лучше разместить комбо на панели инструментов сетки.Панели инструментов расширяют Ext.Container и поэтому намного лучше подходят для размещения других компонентов Ext.Попробуйте следующее:

var grid = new Ext.grid.GridPanel({
region: 'center',
style: 'margin: 10px',
store: new Ext.data.Store({
    data: myData,
    reader: myReader
}),
tbar: new Ext.Toolbar({
    ctCls: 'panel-header',
    items: [
        { xtype: 'tbfill' },
        { tag: 'div', cls: 'panel_header_main', 'html': 'Shopping Cart' },
        { tag: 'div', cls: 'panel_header_icon1', 'html': '<img src="images/icon_plus.png" />' },
        { tag: 'div', cls: 'panel_header_icon2', 'html': '<img src="images/icon_pencil.png" />' },
        { tag: 'div', cls: 'panel_header_extra', 'html': 'Order Number: 2837428347' },
        {
            width:          100,
            xtype:          'combo',
            mode:           'local',
            value:          'en',
            triggerAction:  'all',
            forceSelection: true,
            editable:       false,
            fieldLabel:     'Produkt',
            name:           'language',
            hiddenName:     'language',
            displayField:   'name',
            valueField:     'value',
            store:          new Ext.data.JsonStore({
                fields : ['name', 'value'],
                data   : [
                    {name : 'German',   value: 'de'},
                    {name : 'English',  value: 'en'},
                    {name : 'French', value: 'fr'}
                ]
            })
        }
    ]
}),
2 голосов
/ 28 февраля 2011

GridPanels имеют два свойства, которые могут вас заинтересовать: tbar и bbar; верхняя и нижняя панели инструментов соответственно.

Панели инструментов позволяют добавлять кнопки, элементы меню, раскрывающиеся списки и другие компоненты ExtJS наряду с обычным HTML. На странице примеров ExtJS .

есть пример панели инструментов .

Как правило, код панели инструментов будет очень похож на существующий код:

//instead of 'headerCfg:'
tbar: {
    xtype: 'toolbar',
    cls: 'x-panel-header',
    items: [
       //your items
    ]
}
1 голос
/ 10 ноября 2014

Для этой цели вы можете использовать конфигурацию заголовка.

    header: {
        xtype: 'header',
        titlePosition: 0,
        defaults: {
            padding: '0 0 0 0'
        },
        items: [
            {
                xtype: 'mycombo'  // or use Ext.create('class') instead of lazy instantiation
            }, {  
                xtype: 'button',
                text: '<b>\u2199</b>'
            }
        ]
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...