How to create custom ExtJS form field component?

后端 未结 9 578
无人共我
无人共我 2020-12-02 11:34

I want to create custom ExtJS form field components using other ExtJS components in it (e.g. TreePanel). How can I do it most easily?

I\'ve read doc

9条回答
  •  我在风中等你
    2020-12-02 12:15

    Heh. After posting the bounty I found out that Ext.form.FieldContainer isn't just a field container, but a fully fledged component container, so there is a simple solution.

    All you need to do is extend FieldContainer, overriding initComponent to add the child components, and implement setValue, getValue and the validation methods as appropriate for your value data type.

    Here's an example with a grid whose value is a list of name/value pair objects:

    Ext.define('MyApp.widget.MyGridField', {
      extend: 'Ext.form.FieldContainer',
      alias: 'widget.mygridfield',
    
      layout: 'fit',
    
      initComponent: function()
      {
        this.callParent(arguments);
    
        this.valueGrid = Ext.widget({
          xtype: 'grid',
          store: Ext.create('Ext.data.JsonStore', {
            fields: ['name', 'value'],
            data: this.value
          }),
          columns: [
            {
              text: 'Name',
              dataIndex: 'name',
              flex: 3
            },
            {
              text: 'Value',
              dataIndex: 'value',
              flex: 1
            }
          ]
        });
    
        this.add(this.valueGrid);
      },
    
      setValue: function(value)
      {
        this.valueGrid.getStore().loadData(value);
      },
    
      getValue: function()
      {
        // left as an exercise for the reader :P
      }
    });
    

提交回复
热议问题