在TextField之后显示文本的最佳方法是什么?

时间:2011-04-07 08:38:28

标签: extjs textfield

我正在创建一个包含通过xtype创建的项目的formpanel(不为每个项目调用new)。 我想在TextField的右边添加一个精度。

我设法通过设置一个包含TextField +标准Panel的CompositeField来实现,但有没有更好的方法,比如我错过的TextField属性或更好的选择?

感谢您的帮助! :)

new Ext.form.FormPanel ({
    'id':                   'create-form',
    'header':               true,
    'headerAsText':         true,
    'hideCollapseTool':     true,
    'title':                'New Component',
    'width':                550,
    'style':                'margin: 100px auto',
    'labelWidth':           200,
    'items': [
        {
            'items': [
                {
                    'xtype':            'textfield',
                    'fieldLabel':       'Duration (in hours)',
                    'name':             'name'
                }
            ]
        }
    ]
});

3 个答案:

答案 0 :(得分:6)

如果只需要一个字段,CompositeField就可以了。但是,你真的需要一个全新的Panel文本 - 不会常规Label吗?

如果您需要更可重用的解决方案,请查看FormLayoutfieldTpl配置选项。您可以修改模板并在字段后面添加一个特殊部分,以显示其他信息。

答案 1 :(得分:3)

我不知道有一个属性可以通过右侧的面板做你想做的事。但是,如果这是你不止一次做的事情,请考虑为它制作自己的类型:

Ext.ns('Ext.ux.form');

Ext.ux.form.DurationField = Ext.extend(Ext.form.CompositeField, {
  constructor: function(cfg) {
    cfg = Ext.applyIf(cfg || {}, {
      items: [ /** blah blah */ ]
    });
    Ext.ux.form.DurationField.superclass.constructor.call(this, cfg);
  }
});

Ext.reg('durationfield', Ext.ux.form.DurationField);

这将让您使用durationfield,就好像它是一等公民一样。

答案 2 :(得分:2)

您还可以在复合字段中使用Ext.form.DisplayFieldxtype displayfield)来显示一些静态文本。