2011-04-07 115 views
3

我创建了一个通过xtype创建的项目的窗体(不要为每个项目调用新项目)。 我想在TextField的右侧添加精度。在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' 
       } 
      ] 
     } 
    ] 
}); 

回答

6

如果你只需要一个字段,CompositeField是好的。然而,你是否真的需要一个全新的Panel文本 - 会不会经常Label足够?

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

+0

感谢您使用标签的想法。我会尝试一个。 – 2011-04-07 08:59:49

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,就好像是一等公民。

+0

你的回答非常好,而且会很完美,但我还有很多其他的细节设置在正确的位置(小时只是一个例子,对不起,我不是更精确:/)。我给了你一个好主意+1。谢谢! – 2011-04-07 09:00:54

2

您也可以在复合区域内使用Ext.form.DisplayFieldxtypedisplayfield)以显示一些静态文本。

相关问题