1. #1
    Sencha User
    Join Date
    Sep 2010
    Posts
    36
    Vote Rating
    0
    francesco.calabri is on a distinguished road

      0  

    Question Display form fields in columns

    Display form fields in columns


    Hi all,

    here's my UI.

    Entry Point.
    Code:
    import java.util.Date;
    
    import com.extjs.gxt.ui.client.Style.LayoutRegion;
    import com.extjs.gxt.ui.client.util.Margins;
    import com.extjs.gxt.ui.client.widget.ContentPanel;
    import com.extjs.gxt.ui.client.widget.LayoutContainer;
    import com.extjs.gxt.ui.client.widget.Viewport;
    import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
    import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
    import com.extjs.gxt.ui.client.widget.layout.FitLayout;
    import com.extjs.gxt.ui.client.widget.layout.RowLayout;
    import com.google.gwt.core.client.EntryPoint;
    import com.google.gwt.user.client.ui.RootPanel;
    
    public class Example2 implements EntryPoint {
        
        public void onModuleLoad() {
            
            RootPanel.get().clear();
            Viewport viewport = new Viewport();
            viewport.setLayout(new BorderLayout());
            
            LayoutContainer north = new LayoutContainer(new RowLayout());
            north.setBorders(true);
            ContentPanel cp = new ContentPanel();
            cp.setHeading(""+new Date());
            cp.setBodyBorder(false);
            cp.setBorders(false);
            
            north.add(cp);
            
            BorderLayoutData data = new BorderLayoutData(LayoutRegion.NORTH, 50);
            data.setMargins(new Margins(5, 5, 5, 5));
            viewport.add(north, data);
            
            LayoutContainer center = new LayoutContainer();
            center.setLayout(new FitLayout());
    
            BorderLayoutData data2 = new BorderLayoutData(LayoutRegion.CENTER);
            data2.setMargins(new Margins(5, 5, 5, 5));
            center.add(new crudPanel());
            viewport.add(center, data2);
            
            LayoutContainer south = new LayoutContainer();
            south.setLayout(new FitLayout());
    
            BorderLayoutData data3 = new BorderLayoutData(LayoutRegion.SOUTH, 30);
            data3.setMargins(new Margins(5, 5, 5, 5));
            south.add(new ContentPanel());
            viewport.add(south, data3);
            
            RootPanel.get().add(viewport);
        }
    }
    My panel in BorderLayoutRegion.CENTER
    Code:
    import java.util.ArrayList;
    import java.util.List;
    
    import com.extjs.gxt.ui.client.Style.Orientation;
    import com.extjs.gxt.ui.client.Style.Scroll;
    import com.extjs.gxt.ui.client.Style.SelectionMode;
    import com.extjs.gxt.ui.client.Style.SortDir;
    import com.extjs.gxt.ui.client.binding.FormBinding;
    import com.extjs.gxt.ui.client.data.BeanModel;
    import com.extjs.gxt.ui.client.event.ButtonEvent;
    import com.extjs.gxt.ui.client.event.SelectionListener;
    import com.extjs.gxt.ui.client.store.ListStore;
    import com.extjs.gxt.ui.client.util.Margins;
    import com.extjs.gxt.ui.client.widget.ContentPanel;
    import com.extjs.gxt.ui.client.widget.LayoutContainer;
    import com.extjs.gxt.ui.client.widget.MessageBox;
    import com.extjs.gxt.ui.client.widget.TabItem;
    import com.extjs.gxt.ui.client.widget.TabPanel;
    import com.extjs.gxt.ui.client.widget.button.Button;
    import com.extjs.gxt.ui.client.widget.form.DualListField;
    import com.extjs.gxt.ui.client.widget.form.FormPanel;
    import com.extjs.gxt.ui.client.widget.form.ListField;
    import com.extjs.gxt.ui.client.widget.form.TextField;
    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.layout.ColumnData;
    import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
    import com.extjs.gxt.ui.client.widget.layout.FitLayout;
    import com.extjs.gxt.ui.client.widget.layout.FormData;
    import com.extjs.gxt.ui.client.widget.layout.FormLayout;
    import com.extjs.gxt.ui.client.widget.layout.RowData;
    import com.extjs.gxt.ui.client.widget.layout.RowLayout;
    import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;
    import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
    
    public class crudPanel extends ContentPanel{
          private FormBinding formBindings = null;
    
          // componenti grafici
          private FormPanel ricercaPanel = null;
          private LayoutContainer cercaPanel = null;
          private ContentPanel gridPanel = null;
          private Grid<BeanModel> grid = null;
          private final ContentPanel tabs = new ContentPanel();
          private TabPanel dati = null;
          private FormPanel form = null;
          private DualListField<BeanModel> lists = null;
          private final MessageBox wait;
    
          // crea un pannello vuoto da riconfigurare
          public crudPanel() {
            setLayout(new RowLayout());
            this.wait = MessageBox.wait("Attendere", "Operazione in corso", "");
            this.wait.close();
            this.setHeading("Cerca Modifica Tipo Postazione");
            this.setFrame(true);
            this.add(createRicercaPanel(), new RowData(1, -1));
            this.add(createTipoPostazionePanel(), new RowData(1, 1));
          }
    
          // crea la form di Ricerca
          private FormPanel createRicercaPanel() {
              ricercaPanel = new FormPanel();
                ricercaPanel.setLayout(new ColumnLayout());
                ricercaPanel.setHeaderVisible(false);
                ricercaPanel.setPadding(10);
                
                Button cercaButton = new Button("Search");
                cercaButton.addSelectionListener(new SelectionListener<ButtonEvent>() {
    
                    @Override
                    public void componentSelected(ButtonEvent be) {
                        //TODO do search
                    }
    
                });
                cercaPanel = new LayoutContainer(new FormLayout());
                cercaPanel.add(cercaButton, new FormData("80% 100%"));
                ricercaPanel.add(cercaPanel, new ColumnData(.1d));
                        
                ricercaPanel.add(new LayoutContainer(new FormLayout()), new ColumnData(.3d));
                ricercaPanel.add(new LayoutContainer(new FormLayout()), new ColumnData(.3d));
                ricercaPanel.add(new LayoutContainer(new FormLayout()), new ColumnData(.3d));
                
                FilterBuilder builder = new FilterBuilder();
                
                List<ParameterVO> parametri = new ArrayList<ParameterVO>();
                parametri.add(new ParameterVO(ParameterTypes.TEXT, "TextLabel1", null, null, null, null));
                parametri.add(new ParameterVO(ParameterTypes.TEXT, "TextLabel2", null, null, null, null));
                parametri.add(new ParameterVO(ParameterTypes.DATE, "DateLabel", null, null, null, null));
                parametri.add(new ParameterVO(ParameterTypes.DATE_BETWEEN, "From-To", null, null, null, null));
                parametri.add(new ParameterVO(ParameterTypes.LONG, "LongLabel", null, new Long(13), null, null));
                
                
                for(int i = 0; i<parametri.size(); i++) {
                    ParameterVO field = parametri.get(i);
                    ((LayoutContainer)ricercaPanel.getItem(i%3+1)).add(builder.build(field));
                }
                
                return ricercaPanel;
          }
    
          // crea una griglia vuota da riconfigurare
          private ContentPanel createTipoPostazionePanel() {
    
            ContentPanel tipoPostazionePanel = new ContentPanel();
            tipoPostazionePanel.setFrame(true);
            tipoPostazionePanel.setLayout(new RowLayout(Orientation.HORIZONTAL));
    
            gridPanel = createGrid();
            gridPanel.setBorders(true);
            tipoPostazionePanel.add(gridPanel, new RowData(.3d,1, new Margins(0, 5, 0, 0)));
    
            createForm();
            formBindings = new FormBinding(form, true);
            formBindings.setStore(grid.getStore());
    
            dati = new TabPanel();
            dati.setBorders(false);
            TabItem dettaglioTab = new TabItem("1");
            dettaglioTab.setLayout(new FitLayout());
            dettaglioTab.add(form);
    
            TabItem funzioniTab = new TabItem("2");
            funzioniTab.setLayout(new FitLayout());
            funzioniTab.add(createList());
    
            dati.add(dettaglioTab);
            dati.add(funzioniTab);
            tabs.setHeaderVisible(false);
            tabs.setLayout(new FitLayout());
            tabs.add(dati);
            tabs.setBorders(true);
    
            ToolBar tb = new ToolBar();
            tb.setBorders(true);
            tb.setId("toolbar-tab");
            tb.setStyleAttribute("borderTop", "0px");
    
            tb.add(new Button("Delete", new SelectionListener<ButtonEvent>() {
    
              @Override
              public void componentSelected(ButtonEvent ce) {
              }
    
            }));
    
            tb.add(new Button("Save", new SelectionListener<ButtonEvent>() {
              @Override
              public void componentSelected(ButtonEvent ce) {
              }
            }));
    
            tb.add(new Button("Cancel", new SelectionListener<ButtonEvent>() {
              @Override
              public void componentSelected(ButtonEvent ce) {
              }
            }));
    
            tabs.setBottomComponent(tb);
    
            tipoPostazionePanel.add(tabs, new RowData(.7d,1));
    
            return tipoPostazionePanel;
          }
    
          private ContentPanel createGrid() {
    
            ContentPanel panel = new ContentPanel();
    
            List<BeanModel> tipiPostazione = new ArrayList<BeanModel>();
            ListStore<BeanModel> store = new ListStore<BeanModel>();
            store.setMonitorChanges(true);
            store.add(tipiPostazione);
    
            List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
    
            ColumnConfig codiceProfiloColumn = new ColumnConfig("codiceTipoPostazione", "Code", 80);
            configs.add(codiceProfiloColumn);
    
            ColumnConfig descrizioneProfiloColumn = new ColumnConfig("descrizione", "Description", 270);
            configs.add(descrizioneProfiloColumn);
    
            grid = new Grid<BeanModel>(store, new ColumnModel(configs));
            grid.setStripeRows(true);
            grid.setAutoExpandColumn("descrizione");
            grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
            panel.setHeaderVisible(false);
            panel.setLayout(new FitLayout());
            
            PagingToolBar pagingToolBar = new PagingToolBar(5);
            
            panel.add(grid);
            
            Button nuovo = new Button("New");
    
            pagingToolBar.add(nuovo);
            panel.setBottomComponent(pagingToolBar);
            return panel;
          }
    
          private void createForm() {
    
            form = new FormPanel();
            form.setHeaderVisible(false);
            form.setScrollMode(Scroll.AUTO);
            final TextField<String> codice = new TextField<String>();
            codice.setName("codiceTipoPostazione");
            codice.setFieldLabel("Code");
            form.add(codice);
    
            TextField<String> descrizione = new TextField<String>();
            descrizione.setName("descrizione");
            descrizione.setFieldLabel("Description");
            form.add(descrizione);
          }
    
          private FormPanel createList() {
    
            FormPanel listPanel = new FormPanel();
            listPanel.setScrollMode(Scroll.AUTO);
            listPanel.setHeaderVisible(false);
    
            lists = new DualListField<BeanModel>();
            lists.setFieldLabel("Lists");
    
            final ListField<BeanModel> from = lists.getFromList();
            from.setDisplayField("codiceFunzione");
            ListStore<BeanModel> store = new ListStore<BeanModel>();
            store.setMonitorChanges(true);
            store.add(new ArrayList<BeanModel>());
            from.setStore(store);
    
            final ListField<BeanModel> to = lists.getToList();
            to.setDisplayField("codiceFunzione");
            store = new ListStore<BeanModel>();
            to.setStore(store);
    
            listPanel.add(lists, new FormData("70%"));
            return listPanel;
    
          }
    
          public void reconfigureGrid(ListStore<BeanModel> store) {
    
            formBindings.unbind();
            store.sort("codiceTipoPostazione", SortDir.ASC);
            grid.reconfigure(store, grid.getColumnModel());
            formBindings.setStore(grid.getStore());
    
            if (gridPanel.isMasked()) gridPanel.unmask();
    
            tabs.mask("Select a record");
          }
    
    }
    Value object that represent a field
    Code:
    import java.io.Serializable;
    
    import com.extjs.gxt.ui.client.data.BeanModel;
    import com.extjs.gxt.ui.client.store.ListStore;
    
    public class ParameterVO implements Serializable{
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        private ParameterTypes type;
        private String label;
        private String andLabel;
        private Object defaultValue;
        private Object defaultAndValue;
        private ListStore<BeanModel> store;
        
        public ParameterVO() {
            super();
        }
    
        public ParameterVO(ParameterTypes type, String label, String andLabel,
                Object defaultValue, Object defaultAndValue, ListStore<BeanModel> store) {
            super();
            this.type = type;
            this.label = label;
            this.andLabel = andLabel;
            this.defaultValue = defaultValue;
            this.defaultAndValue = defaultAndValue;
            this.store = store;
        }
    
        public ParameterTypes getType() {
            return type;
        }
    
        public void setType(ParameterTypes type) {
            this.type = type;
        }
    
        public String getLabel() {
            return label;
        }
    
        public void setLabel(String label) {
            this.label = label;
        }
    
        public String getAndLabel() {
            return andLabel;
        }
    
        public void setAndLabel(String andLabel) {
            this.andLabel = andLabel;
        }
    
        public Object getDefaultValue() {
            return defaultValue;
        }
    
        public void setDefaultValue(Object defaultValue) {
            this.defaultValue = defaultValue;
        }
    
        public Object getDefaultAndValue() {
            return defaultAndValue;
        }
    
        public void setDefaultAndValue(Object defaultAndValue) {
            this.defaultAndValue = defaultAndValue;
        }
    
        public ListStore<BeanModel> getStore() {
            return store;
        }
    
        public void setStore(ListStore<BeanModel> store) {
            this.store = store;
        }
        
        
    
    }
    The "FilterBuilder"
    Code:
    import java.util.Date;
    
    import com.extjs.gxt.ui.client.data.BeanModel;
    import com.extjs.gxt.ui.client.store.ListStore;
    import com.extjs.gxt.ui.client.widget.LayoutContainer;
    import com.extjs.gxt.ui.client.widget.form.CheckBox;
    import com.extjs.gxt.ui.client.widget.form.ComboBox;
    import com.extjs.gxt.ui.client.widget.form.DateField;
    import com.extjs.gxt.ui.client.widget.form.FormPanel;
    import com.extjs.gxt.ui.client.widget.form.NumberField;
    import com.extjs.gxt.ui.client.widget.form.TextArea;
    import com.extjs.gxt.ui.client.widget.form.TextField;
    import com.extjs.gxt.ui.client.widget.layout.ColumnData;
    import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
    import com.extjs.gxt.ui.client.widget.layout.FormLayout;
    import com.google.gwt.user.client.ui.Widget;
    
    public class FilterBuilder {
    
        // variabili per campi between-and
        FormPanel l = new FormPanel();
        LayoutContainer between = new LayoutContainer(new FormLayout());
        LayoutContainer and = new LayoutContainer(new FormLayout());
    
        public FilterBuilder() {
            l.setLayout(new ColumnLayout());
            l.setHeaderVisible(false);
            l.setPadding(0);
        }
    
        public Widget build(ParameterVO field) {
            /*
             * mi aspetto un parameterVO che abbia i metodi
             * 
             * ParameterType getType(); --> Enum String getLabel(); String
             * getAndLabel(); Object getDefaultValue(); Object getDefaultAndValue();
             * List<BeanModel> getStore(); --> return null se non รจ tipo ComboBox
             */
    
            switch ((ParameterTypes) field.getType()) {
            case TEXT:
                TextField<String> ts = new TextField<String>();
                ts.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof String)
                    ts.setValue((String) field.getDefaultValue());
                return ts;
    
            case LONG:
                NumberField tl = new NumberField();
                tl.setPropertyEditorType(Long.class);
                tl.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof Long)
                    tl.setValue((Long) field.getDefaultValue());
                return tl;
    
            case TEXTAREA:
                TextArea ta = new TextArea();
                ta.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof String)
                    ta.setValue((String) field.getDefaultValue());
                return ta;
    
            case COMBO:
                ComboBox<BeanModel> cb = new ComboBox<BeanModel>();
                cb.setFieldLabel(field.getLabel());
                cb.setStore(field.getStore() == null ? new ListStore<BeanModel>()
                        : field.getStore());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof BeanModel)
                    cb.select((BeanModel) field.getDefaultValue());
                return cb;
    
            case CHECK:
                CheckBox check = new CheckBox();
                check.setFieldLabel(field.getLabel());
                check.setValue(field.getDefaultValue() == null
                        || !(field.getDefaultValue() instanceof Boolean) ? false
                        : (Boolean) field.getDefaultValue());
                return check;
    
            case DATE:
                DateField d = new DateField();
                d.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof Date)
                    d.setValue((Date) field.getDefaultValue());
                return d;
    
            case PASSWORD:
                TextField<String> tp = new TextField<String>();
                tp.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof String)
                    tp.setValue((String) field.getDefaultValue());
                tp.setPassword(true);
                return tp;
    
            case REAL:
                NumberField tr = new NumberField();
                tr.setPropertyEditorType(Double.class);
                tr.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof Double)
                    tr.setValue((Integer) field.getDefaultValue());
                return tr;
    
            case DATE_BETWEEN:
                l.removeAll();
                between.removeAll();
                and.removeAll();
    
                DateField betweenDate = new DateField();
                betweenDate.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && (field.getDefaultValue() instanceof Date))
                    betweenDate.setValue((Date) field.getDefaultValue());
    
                DateField andDate = new DateField();
                //andDate.setFieldLabel(field.getAndLabel());
                if (field.getDefaultAndValue() != null
                        && (field.getDefaultAndValue() instanceof Date))
                    andDate.setValue((Date) field.getDefaultAndValue());
                
                between.add(betweenDate);
                and.add(andDate);
                l.add(between, new ColumnData(.5d));
                l.add(and, new ColumnData(.5d));
                return l;
    
            case LONG_BETWEEN:
                l.removeAll();
                between.removeAll();
                and.removeAll();
    
                NumberField betweenLong = new NumberField();
                betweenLong.setFieldLabel(field.getLabel());
                betweenLong.setPropertyEditorType(Long.class);
                if (field.getDefaultValue() != null
                        && (field.getDefaultValue() instanceof Long))
                    betweenLong.setValue((Long) field.getDefaultValue());
    
                NumberField andLong = new NumberField();
                andLong.setFieldLabel(field.getAndLabel());
                andLong.setPropertyEditorType(Long.class);
                if (field.getDefaultAndValue() != null
                        && (field.getDefaultAndValue() instanceof Long))
                    andLong.setValue((Long) field.getDefaultAndValue());
    
                between.add(betweenLong);
                and.add(andLong);
    
                l.add(between, new ColumnData(.5d));
                l.add(and, new ColumnData(.5d));
                return l;
    
            case REAL_BETWEEN:
                l.removeAll();
                between.removeAll();
                and.removeAll();
    
                NumberField betweenReal = new NumberField();
                betweenReal.setFieldLabel(field.getLabel());
                betweenReal.setPropertyEditorType(Double.class);
                if (field.getDefaultValue() != null
                        && (field.getDefaultValue() instanceof Double))
                    betweenReal.setValue((Double) field.getDefaultValue());
    
                NumberField andReal = new NumberField();
                andReal.setFieldLabel(field.getAndLabel());
                andReal.setPropertyEditorType(Double.class);
                if (field.getDefaultAndValue() != null
                        && (field.getDefaultAndValue() instanceof Double))
                    andReal.setValue((Double) field.getDefaultAndValue());
    
                between.add(betweenReal);
                and.add(andReal);
    
                l.add(between, new ColumnData(.5d));
                l.add(and, new ColumnData(.5d));
                return l;
    
            case TEXT_BETWEEN:
                l.removeAll();
                between.removeAll();
                and.removeAll();
    
                TextField<String> betweenText = new TextField<String>();
                betweenText.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && (field.getDefaultValue() instanceof String))
                    betweenText.setValue((String) field.getDefaultValue());
    
                TextField<String> andText = new TextField<String>();
                andText.setFieldLabel(field.getAndLabel());
                if (field.getDefaultAndValue() != null
                        && (field.getDefaultAndValue() instanceof String))
                    andText.setValue((String) field.getDefaultAndValue());
    
                between.add(betweenText);
                and.add(andText);
    
                l.add(between, new ColumnData(.5d));
                l.add(and, new ColumnData(.5d));
                return l;
    
            default:
                return null;
            }
        }
    }
    Enumeration of possible field types
    Code:
    public enum ParameterTypes {
        TEXT,
        LONG,
        REAL,
        TEXTAREA,
        DATE,
        COMBO,
        CHECK,
        PASSWORD,
        DATE_BETWEEN,
        TEXT_BETWEEN,
        LONG_BETWEEN,
        REAL_BETWEEN;
    }
    I would display a list of fields (List<ParameterVO>) in 3 columns (in the Panel, createRicercaPanel() method).
    I also would the fields to resize themselves, even in case of fields formed by two inner fields (like date from-to).
    In this example, components are resizing, but the fields inside them aren't. (So when I have date fields I might lose the calendar!).

    There's a way to resize fields directly, with the components that cointain them?

    Thank,
    F

  2. #2
    Software Architect
    Join Date
    Sep 2007
    Posts
    13,971
    Vote Rating
    132
    sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light

      0  

    Default


    change that line
    Code:
     ((LayoutContainer)ricercaPanel.getItem(i%3+1)).add(builder.build(field));
    to
    Code:
     ((LayoutContainer)ricercaPanel.getItem(i%3+1)).add(builder.build(field), new FormData("100%"));

  3. #3
    Sencha User
    Join Date
    Sep 2010
    Posts
    36
    Vote Rating
    0
    francesco.calabri is on a distinguished road

      0  

    Default


    Works fine..
    Only need to add FormData also in each one of the fields of the between-and:

    Code:
    case DATE_BETWEEN:             l.removeAll();             between.removeAll();             and.removeAll();              DateField betweenDate = new DateField();             betweenDate.setFieldLabel(field.getLabel());             if (field.getDefaultValue() != null                     && (field.getDefaultValue() instanceof Date))                 betweenDate.setValue((Date) field.getDefaultValue());              DateField andDate = new DateField();             //andDate.setFieldLabel(field.getAndLabel());             if (field.getDefaultAndValue() != null                     && (field.getDefaultAndValue() instanceof Date))                 andDate.setValue((Date) field.getDefaultAndValue());                          between.add(betweenDate, new FormData("100%"));             and.add(andDate, new FormData("100%"));             l.add(between, new ColumnData(.5d));             l.add(and, new ColumnData(.5d));             return l;

  4. #4
    Software Architect
    Join Date
    Sep 2007
    Posts
    13,971
    Vote Rating
    132
    sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light

      0  

    Default


    If that is added to a FormLayout than yes. I have not looked more into the code

Similar Threads

  1. Is there a way to display form fields inline?
    By chaddjohnson in forum Ext 3.x: Help & Discussion
    Replies: 2
    Last Post: 26 May 2010, 8:58 AM
  2. Submit form with both display and value fields of Combobox
    By ap in forum Ext 3.x: Help & Discussion
    Replies: 2
    Last Post: 3 Dec 2009, 10:03 AM
  3. How can i display the description of the form fields?
    By chenwei_022 in forum Ext 2.x: Help & Discussion
    Replies: 3
    Last Post: 8 Apr 2008, 8:44 AM
  4. Display a fields value in a form
    By maddene in forum Ext 2.x: Help & Discussion
    Replies: 1
    Last Post: 7 Feb 2008, 10:20 AM

Thread Participants: 1