我有一个使用ExtJs编写的自定义组件,是一个表单字段(GridField)。它将网格作为表单字段显示,并正常工作。观察如下:
当表单单独渲染时(例如在窗口中或卡片布局中的第一个面板中),一切都显示得很好。
当表单不是卡片布局中的第一个面板,或者在第一次渲染时被隐藏时,字段名称显示,所需的空间留下,但控件不显示。
我检查了一些内容,发现自定义组件实际上已经渲染出来,但所有HTML元素(div等)的宽度都为0。它们都具有样式(width:0)。我猜测这是因为表单面板在渲染时没有可见性。
在控件的实现方面,我正在扩展 Ext.form.field.Base
。在 initComponent
中,我只是调用 this.on('afterrender', this.initControl)
以在渲染后运行其他控制的自定义代码。在这里, input
字段会被隐藏,而网格会被渲染到其应在的位置。
我的问题是: 1.如何强制控件重新渲染,以便宽度不再为0? 2.如果当前实现有误,使用网格或其他ext组件作为表单字段的正确方法是什么?