EXT JS 4 - Поля изкладывания в форме с использованием Hbox, Vbox и т. Д.

StackOverflow https://stackoverflow.com/questions/8301983

Вопрос

У меня есть простая форма Ext JS 4 внутри окна (приложение MVC Style). В примере ниже показаны 4 поля. Этот пример упрощен, но теперь мне нужно взять эти поля и выложить их, используя Hbox и Vbox (и, возможно, другие?)

Как бы я, например, взять первые два поля и положить в Hbox в верхней части формы, чтобы они отображались горизонтально, в верхней части формы, затем возьмите остальные поля и помещают их в Vbox ниже этого Hbox, чтобы они отображали вертикально?

(В моей реальной форме гораздо больше полей, и у меня будут различные другие hbox/vbox, но я просто хочу начать):

Ext.define('ESDB.view.encounter.Edit', {
    extend: 'Ext.window.Window',
    alias : 'widget.encounteredit',
    title : 'Edit Encounter',
    layout: 'fit',
    width: 700,
    autoShow: true,

    initComponent: function() {
        this.items = [

        {
            xtype: 'form',
            items: [
                {
                xtype: 'displayfield',
                name: 'id',
                fieldLabel: 'ID'
                },
                {
                    xtype: 'displayfield',
                    name: 'cid',
                    fieldLabel: 'cid#'
                },
                {
                    xtype: 'displayfield',
                    name: 'addedDate',
                    fieldLabel: 'Added'
                },
                {
                    xtype: 'displayfield',
                    name: 'clientID',
                    fieldLabel: 'Client#'
                }
                     }
     ]

   }

Я посмотрел на различные примеры макета Sencha Page , Sencha Docs, и наконец Еще один - У этого последнего есть что -то, что выглядит близко - в дереве форм, наборы в 2 столбцах, в нем показана форма с элементами [], а внутри некоторый код макета, и я смог привлечь это к частично работать, но не был Способен конвертировать его в макет стиля Hbox/Vbox. Когда я установил его в Hbox, в HBOX нет высоты, поэтому я не вижу поля.

Это было полезно?

Решение

Вот пример:

Ext.define('ESDB.view.encounter.Edit', {
    extend: 'Ext.window.Window',
    alias : 'widget.encounteredit',
    title : 'Edit Encounter',
    layout: 'fit',
    width: 700,
    autoShow: true,

    items: [{
        xtype: 'form',
        items: [
            {
                xtype: 'panel',
                border: false,
                layout: 'hbox',
                items: [
                    {
                        xtype: 'displayfield',
                        name: 'id',
                        fieldLabel: 'ID',
                        flex: 0.5
                    },
                    {
                        xtype: 'displayfield',
                        name: 'cid',
                        fieldLabel: 'cid#',
                        flex: 0.5
                    }
                ]
            },
            {
                xtype: 'displayfield',
                name: 'addedDate',
                fieldLabel: 'Added'
            },
            {
                xtype: 'displayfield',
                name: 'clientID',
                fieldLabel: 'Client#'
            }
        ]
    }]
});

Если вы хотите отображать блоки в форме от допуска, вам не нужно менять макет. Я завершил только 2 поля первого отображения на панель с макетом Hbox (потому что вы хотите разделить только первый ряд).

Другие советы

Вы не можете смешать два макета на одной панели. Таким образом, вы должны использовать подпанели для выбора поля в соответствии с различными правилами. Эти подпанели не нужны (и не должны) быть панелями формы, просто нормальные панели с макетом формы (так что вы получите меток поля). Я регулярно делал что-то похожее на достижение столбца, подобное, для полей формы (что не очень хорошо поддерживается EXTJ): поэтому у панели верхней формы была расположение Vbox, затем были некоторые подпанели с макетом Hbox и Sub- Подпанели (или поля) с макетом формы, в которой содержались поля. Макет колонны также может быть полезен в некоторых случаях.

PS Последний пример, который вы упоминаете (2 столбца с полевыми наборами) на самом деле представляет собой панель формы с макетом столбца, содержащей два поля (подпанели) с макетом формы. Так что это структурировано, похожее на то, что я описал выше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top