我在一个窗口(MVC样式应用程序)中有一个简单的Ext JS 4表单。以下示例显示了4个字段。这个例子是简化的,但现在我需要使用这些字段并使用hbox和vbox(以及可能还有其他人)将它们排出来。
我将如何获取前两个字段并将hbox放在表单顶部,使它们水平显示在表单顶部,然后取出其余字段并将它们放入在那个hbox下方的vbox,它们会垂直显示?
(我的实际表单中有更多字段,我会有各种其他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以及最后another one的各种示例 - 最后一个看起来很接近 - 在表单树中,2列中的字段集,它显示了一个带有items []的表单,里面有一些布局代码,我能够将其部分工作,但无法将其转换为hbox / vbox样式布局。当我将它设置为hbox时,hbox没有高度,所以我看不到字段。
答案 0 :(得分:4)
以下是示例:
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#'
}
]
}]
});
如果要从上到下显示表单中的块,则无需更改布局。我只使用hbox布局将2个第一个显示字段包装到面板中(因为你只想拆分第一行)。
答案 1 :(得分:2)
您不能在一个面板中混合使用两种布局。因此,您必须根据各种规则使用子面板布置字段。这些子面板不需要(也不应该)形成面板,只需要具有表单布局的普通面板(因此您将获得字段标签)。 我经常做类似的事情来实现表单字段的列式布局(extjs不太支持):所以顶部表单面板有一个vbox布局,然后有一些子面板与hbox布局和子包含字段的表单布局的子面板(或字段集)。在某些情况下,列布局也可能有所帮助。
PS你提到的最后一个例子(带有字段集的2列)实际上是一个表单面板,其列布局包含两个带表单布局的字段集(子面板)。所以它的结构类似于我上面所描述的。