2012-04-22 11 views
2

GWTのショーケースと同様に、私が見つけた多くの例では、データグリッドの非常にシンプルな使用法は常にあるでしょう。GWT DataGridが存在しない垂直スクロールバー

  1. あなたのUiBinderサンプルメッセージでDataGridの要素を定義しますあなたはそれを提供するフィールドを設定します。あなたは、グリッドを初期化ビューコンストラクタで
  2. - 列を定義して、UIのバインダーは、それが期待通りに提示
  3. すべてを発生させる
  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> 

- 東パネルが正しい値である650pxの高さ、だけでなく、内部のデータグリッドを獲得SimpleLayoutPanelは同じ高さになります!それ以前にいくつかのラベルなどがあるので、東のパネルのサイズがオーバーフローします。

ヘルプ?

UPDATE: 私が東-パネルからすべてを削除し、データグリッドの唯一SimpleLayoutPanelを残す場合ようだ - それは見つける動作します! しかし、これらの余分なラベルをグリッドの上に追加する必要があります。解決策が見つかりません。 ??

答えて

3

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

レイアウトパネル(RequiresResizeウィジェット)を参照してくださいまでずっとアップ他のレイアウトパネル(ProvidesResizeウィジェット)にネストされなければならないのいずれかRootLayoutPanel、明示的な固定サイズのResizePanelまたはレイアウトパネル(すなわちfuildではなく、例えば、親パネルのパーセンテージではなく、ピクセルで表示されます)。

ここでは、DockLayoutPanelSimpleLayoutPanelの間のFlowPanelが階層を分割します。

あなたはコンテンツとして、あなたSimpleLayoutPanel(またはあなたのDatagrid)(コンテナFlowPanelに)ヘッダ内のすべてのFlowPanel Sを入れて、HeaderPanelFlowPanelを交換したい場合があります。ProvidesResizeHeaderPanel点にこの契約を実装していないにもかかわらずだけで、そのコンテンツ子供のため
(それはそれの核心です:サイズHeaderPanelのサイズとヘッダの固有サイズに応じてコンテンツおよびフッター

関連する問題