2

GWT 展示,以及我发现的许多示例,总有一个非常简单的 DataGrid 用法:

  1. 您在 UIBinder 中定义 DataGrid 元素,并设置要提供的字段。
  2. 在视图构造函数中初始化网格 - 定义列并添加数据
  3. 生成 UI 活页夹
  4. 它呈现的一切都符合预期..

但常见情况并非如此静态:您通常设置网格但没有数据,这些数据可能仅在用户执行某些操作(单击按钮等)后提供。

我花了很多时间在我复杂的 UI 布局中展示 DataGrid :| 为此,网格现在托管在具有 100% 宽度和高度的 SimpleLayoutPanel 中,并且此 SimpleLayoutPanel 位于某个停靠面板内。但由于我不明白的原因 - 网格的显示超出了停靠面板的大小,所以我永远看不到它的滚动条的底端。

这是我的 UI 活页夹(为了清楚起见删除了一些东西):

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g="urn:import:com.google.gwt.user.client.ui">

<ui:style>

.sidePadding {
    padding-left: 8px;
        padding-right: 8px;
 }

    .expanded {
    width: 100%;
    height: 100%;
}


<g:DockLayoutPanel unit="PX" styleName="{style.expanded}">
    <g:north size="45">
        ...
    </g:north>
    <g:center>
    </g:center>
        ...
    <g:east size="190">
        <g:FlowPanel styleName="{style.sidePadding}">
            <g:FlowPanel>
                <g:Label>SOME TOOLBAR</g:Label>
            </g:FlowPanel>
            <g:HTMLPanel>
                <g:Label>SOME PANEL PANEL </g:Label>
            </g:HTMLPanel>
            <g:FlowPanel ui:field="eastContent">
                <g:Label>SOME FLOW PANEL</g:Label>
            </g:FlowPanel>
            <g:SimpleLayoutPanel ui:field="imagesGrid" addStyleNames="{style.expanded}"/>
        </g:FlowPanel>
    </g:east>
</g:DockLayoutPanel>

</ui:UiBinder>

事实证明 - 东面板的高度为 650 像素,这是正确的值,但 SimpleLayoutPanel 内的 DataGrid 也具有相同的高度!并且因为它之前有一些标签等 - 它溢出了东面板的大小..

有什么帮助???

更新: 似乎如果我从东面板中删除所有内容并只留下 DataGrid 的 SimpleLayoutPanel - 它可以找到!但我确实需要在网格上方添加所有这些额外的标签 - 我找不到解决方案。??

4

1 回答 1

3

请参阅https://developers.google.com/web-toolkit/doc/latest/DevGuideUiPanels

布局面板(RequiresResize小部件)必须一直嵌套到其他布局面板(ProvidesResize小部件)中,直到具有明确和固定大小(即不满足,例如未以父面板的百分比给出)的 、a 或布局面板RootLayoutPanel,而是以像素为单位)。ResizePanel

在这里,你FlowPanelDockLayoutPanel和之间SimpleLayoutPanel打破了层次结构。

您可能希望将 sFlowPanel与 a进行交易HeaderPanel,将所有FlowPanels 放在标题中(在容器中FlowPanel)并将您的SimpleLayoutPanel(或您的Datagrid)作为内容
尽管没有实施ProvidesResizeHeaderPanel但尊重此合同,但仅针对其内容子项(这是它的关键:根据's 的大小和页眉页脚的内在大小调整内容子项的大小)HeaderPanel

于 2012-04-22T13:54:33.997 回答