未提供java GWT数据网格
我正在尝试从CellTable切换到DataGrid。实际的更改非常简单(API是完全相同的)-但是如果不明确设置网格的宽度和高度,我无法使网格可见。在CellTable中,将宽度和高度设置为100%就足够了,这就是我想要的行为
在我看来,HotrizontalPanel中有两个部分:一个显示一些选项卡(按钮),另一个显示网格。每次单击选项卡时,将清除栅格区域并创建新栅格
视图如下所示:
<ui:style>
.expanded {
width: 100%;
height: 100%;
}
.simpleContainer {
border-top: 5px solid #484848;
border-bottom: 5px solid #484848;
}
</ui:style>
<c:SimpleContainer addStyleNames="{style.simpleContainer} SimpleContainer">
<g:HorizontalPanel>
<g:HorizontalPanel ui:field="headersContainer"/>
<g:FlowPanel ui:field="tablePanel" styleName="{style.expanded}"/>
</g:HorizontalPanel>
</c:SimpleContainer>
这是正在运行的应用程序的HTML快照:
<div class="GKQJTVMDCNC-com-mycode-management-client-ui-panels-PropertiesPaneView_PropertiesPaneUiBinderImpl_GenCss_style-simpleContainer SimpleContainer" id="x-widget-21" style="width: 1730px; height: 126px; ">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="left" style="vertical-align: top; ">....</td>
<td align="left" style="vertical-align: top; ">
<div class="GKQJTVMDBNC-com-mycode-management-client-ui-panels-PropertiesPaneView_PropertiesPaneUiBinderImpl_GenCss_style-expanded">
<div style="position: relative; overflow-x: hidden; overflow-y: hidden; " __gwtcellbasedwidgetimpldispatchingfocus="true" __gwtcellbasedwidgetimpldispatchingblur="true">
....
</div>
</div>
</td>
</tr>
</tbody>
</table>
上面的div具有正确的宽度和高度,但不知何故,DataGrid div具有1px的高度和0px的宽度(根据chrome开发工具的列表)
<div class="GKQJTVMDBNC-com-mycode-management-client-ui-panels-PropertiesPaneView_PropertiesPaneUiBinderImpl_GenCss_style-expanded">
有什么想法吗
# 1 楼答案
将DataGrid放在SimpleLayoutPanel中(并将所有内容放在RootLayoutPanel上)会有所帮助,谢谢
但是它只在这个简单的情况下有效——在我的布局中,它不会有帮助。似乎因为桌子在水平面板内,所以不会有合适的尺寸。用适当的CSS将HorizontalPanel拆分为两个div,使其水平,也不会有帮助
最后,我通过设置DataGrid的宽度和高度(从宿主父窗口小部件获取值),成功地解决了这个问题。我不喜欢这个解决方案,但这是经过长期尝试和错误后我能想出的最好办法。 我找不到不以“静态”方式使用DataGrid的好例子:GWT showcase只提供了一种明显的情况——网格在出现之前用数据初始化。这根本不是常见的情况
# 2 楼答案
是的,
CellTable
确实在100%的高度和宽度下工作然而,“数据网格”没有。 您需要设置明确的宽度/高度
或者,您可以将“DataGrid”放在实现ProvidesResize接口(即SimpleLayoutPanel)的“LayoutPanel”中
使用LayoutPanel的好处是,在调整浏览器窗口大小时,Datagrid会自动调整大小