没有呈现GWT数据网格

时间:2012-04-08 08:58:15

标签: java gwt datagrid

我正在尝试从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">

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

是的,CellTable确实可以100%的高度和宽度工作 但是''DataGrid''没有。 您需要设置明确的宽度/高度 或者,您可以将“DataGrid”放在实现ProvidesResize界面的“LayoutPanel”中(即SimpleLayoutPanel)。 使用LayoutPanel的好处是,当您调整浏览器窗口大小时,Datagrid会自动调整大小。

答案 1 :(得分:1)

将DataGrid放在SimpleLayoutPanel中(并将所有内容放在RootLayoutPanel上)确实有帮助,谢谢!。

但是它仅适用于这种简单的情况 - 在我的布局中它无济于事。似乎因为表格在Horizo​​ntalPanel内部,所以它不会得到合适的大小。使用适当的CSS将Horizo​​ntalPanel分成两个div以使它们成为水平,也无济于事。

最后,我设法通过明确设置宽度和高度到DataGrid来修复它(从托管父窗口小部件中获取值)。我不喜欢这个解决方案,但这是经过长时间的反复试验后我能想到的最好的解决方案。 我找不到使用DataGrid而不是以“静态”方式使用的好例子:GWT展示只显示了一个明显的例子 - 网格在数据之前被初始化。这根本不是常见的情况......