6

GXT に次のようなグリッドがあります。

List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
ColumnConfig config = new ColumnConfig();
config.setId("type");
config.setHeader("Type");
config.setWidth(50);
configs.add(config);
config = new ColumnConfig();
config.setId("text");
config.setHeader("Info");
config.setWidth(75);
configs.add(config);

columnModel = new ColumnModel(configs);
listStore = new ListStore<DtoModel>();

grid = new Grid<DtoModel>(listStore, columnModel);
grid.setAutoHeight(true);
grid.setAutoWidth(true);

VerticalPanel verticalPanel = new VerticalPanel();
verticalPanel.setLayout(new FillLayout());
verticalPanel.add(grid);

これにより、グリッドが適切に作成されますが、例外が 1 つあります。幅は、列幅の合計に制限されます。列の幅を忘れると、グリッドの幅が 0 になります。

このグリッドとその列を拡張して、使用可能な領域全体を埋める方法はありますか?

編集:問題の 1 つは、ColumnConfig.setWidth()メソッドがintパラメーターとしてのみを取ることです。そのため、「100%」を文字列などとして指定することはできません。

4

5 に答える 5

7

これはそれを行う方法です:

grid.getView().setAutoFill(true);

覚えておくべき重要なポイントは次のとおりです。列のサイズを変更するときに setAutoFill() を使用すると、gxt は常に他のすべての列のサイズを変更して、グリッドが引き続きコンテナーに収まるようにします。autoFill を使用せずに、autoExpand 列を使用するだけで、1 つの列のサイズを変更すると、グリッドが含まれているコンポーネントよりも大きく (または小さく) なる可能性があり、そのような場合、グリッドを手動でサイズ変更して収まるようにする必要があります。ほとんどの場合、エンドユーザーにとってはほとんど不可能です。

于 2010-11-12T13:26:53.610 に答える
5

GridView には、すべての列を使用可能なスペースに強制的に収める関数があります。これは、すべての列に 1 のフレックスを設定するようなものです。

grid.getView().setForceFit(true);
于 2012-11-21T13:08:09.743 に答える
3

GXT Grid には setAutoExpandColumn() という名前のメソッドがあり、グリッド内の使用可能なすべてのスペースを占有する列の ID を取得します。グリッドから setAutoHeight と setAutoWidth を削除します。

ブラウザーの高さ/幅に基づいて拡張される固定幅レイアウトまたは柔軟なレイアウトを実現しようとしているかどうかはわかりません。グリッドがすべての高さと幅を占有し、ページをスクロールするようにするために、私が通常行うことは次のとおりです。お役に立てれば。

--ヴィニー

    Viewport viewport = new Viewport();
    viewport.setLayout(new BorderLayout());

    ContentPanel center = new ContentPanel();
    center.setFrame(false);
    center.setLayout(new FitLayout());
    center.add(grid);
于 2010-10-14T01:16:34.777 に答える
0

css (setStyle/setColumnStyleName) でグリッド/列のスタイルを設定してから、幅として 100% を使用できます。

キュパコブ

于 2010-10-13T06:39:33.057 に答える