11

後で検索ハンドラーを追加したいので、をに変換しようとしています。そのため、固定の列ヘッダーが必要cellTableです。datagrid現時点では、celltable/datagridクラスを拡張し、ウィジェットをに配置して、simplelayoutpanelこれをに追加しますtabpanel

を使用するとcelltable、すべて正常に機能し、データが表示されます。クラスのタイプをに変更するdatagridと、データが表示されることがあります(列名は常に表示されます)。使用したテーブルに何かを追加するには、setRowDataまたはdataProvider。テーブルコンテンツのロードを遅らせるためにブレークポイントを設定すると、テーブルにデータが含まれることがあります。後でテーブルのredrawメソッドを呼び出すと、テーブルに正しい情報が表示されます。ただし、テーブルはコンテンツを自動的にロードする必要があります。私のプロジェクトの他の「位置」では、データグリッドも使用しましたが、で機能しましたDialogboxes

.getRowCountテーブルまたは非推奨のアイテムを呼び出すと、テーブルに.getDisplayedItemsあるはずの正しい数のアイテムが返されるため、アイテムの描画にバグがあるに違いないと思います。また、テーブルに選択モデルを追加してアイテムを選択すると、そのアイテムには有効なデータが含まれています。

4

3 に答える 3

8

DataGridは、ProvidesResizeインターフェイスを実装するLayoutPanelまたはPanelに配置して表示する必要があります。ScrollPanelはそのインターフェースを実装します。

さらに、DataGridからルート要素/パネルまでのLayoutPanelのこのチェーンは途切れていない必要があります。これは、パネル階層に当てはまるようです。

最後に、RootPanelの代わりにRootLayoutPanelを使用してLayoutPanelを追加する必要があります。では、SimpleLayoutPanelをRootLayoutPanelに追加したことを確認しましたか?

このGWTも参照してください :DataGrid-高さを100%に設定すると、正しくレンダリングされません

于 2012-08-30T05:15:50.973 に答える
8

これが私の2セントです。

適切に形成された「ProvidesResizeを実装するLayoutPanelまたはPanel」ツリー構造の外部でDataGridをレンダリングする場合、常に次の点に注意する必要があることがわかりました。

  1. この質問で説明されているように、height DataGridプロパティには、「123px」などの明示的な値が必要です。これがないと、DataGridはデータ行を表示しません(DOMにある場合でも)。

  2. フォーカスされていないDecoratedTabPanelタブ内にDataGridを配置する場合、そのようなタブがフォーカスを取得したときにDataGrid.redraw()を呼び出す必要があります。繰り返しますが、これがないと、DataGridはデータ行を表示しません(DOMにある場合でも)。

これがお役に立てば幸いです。

于 2013-02-21T20:44:52.237 に答える
3

私の場合、これが原因でした: TabLayoutPanelの2番目のタブにDataGrid行が表示されない

于 2013-11-27T08:38:03.770 に答える