GWT ショーケースと、私が見つけた多くの例では、DataGrid の非常に単純な使用法が常にあります。
- UIBinder で DataGrid 要素を定義し、そのフィールドを提供するように設定します。
- ビューコンストラクターでグリッドを初期化し、列を定義してデータを追加します。
- UIバインダーが生成される
- 期待どおりに提示されたすべて..
しかし、一般的なケースはそれほど静的ではありません。通常、グリッドを設定しますが、ユーザーが何かを行った後 (ボタンをクリックするなど) にのみ提供される可能性のあるデータを持っていません。
複雑な 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>
結局のところ、東のパネルは 650px の高さを取得します。これは正しい値ですが、SimpleLayoutPanel 内の DataGrid も同じ高さを取得します! その前にいくつかのラベルなどがあるため、東のパネルのサイズからはみ出します..
助けて?
更新: 東パネルからすべてを削除し、DataGrid の SimpleLayoutPanel のみを残すと、うまくいくようです。しかし、グリッドの上にこれらすべての余分なラベルを追加する必要があります-解決策が見つかりません. ??