代码之家  ›  专栏  ›  技术社区  ›  Cuga

如何让gxt网格占据所有可用宽度?

  •  6
  • Cuga  · 技术社区  · 14 年前

    我在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);
    

    这样可以创建网格,但有一个例外——宽度仅限于列宽之和。当我放弃列宽时,网格的宽度为0。

    有没有办法让这个网格和它的列展开以填充整个可用区域?

    编辑: 其中一个困难是 ColumnConfig.setWidth() 方法只接受 int 作为参数,所以我不能将“100%”指定为字符串或类似的内容。

    5 回复  |  直到 11 年前
        1
  •  7
  •   Καrτhικ    14 年前

    这样做的方法是:

    grid.getView().setAutoFill(true);
    

    这里有一个要记住的关键点:使用setautofill()调整列的大小时,gxt将始终调整所有其他列的大小,以便网格继续适合容器。如果不使用自动填充,如果只使用自动展开列,如果调整一列的大小,网格可能会比包含的组件大(或小),在这种情况下,您必须手动调整网格大小以适应-这不仅是一个痛苦,在大多数情况下,最终用户几乎不可能。

        2
  •  5
  •   Dreanaught    12 年前

    GridView中有一个函数,它强制所有列适应可用空间。这就像在每列中设置1的灵活性。

    grid.getView().setForceFit(true);
    
        3
  •  3
  •   Vinny Carpenter    14 年前

    gxt网格有一个名为setAutoExpandColumn()的方法,该方法将获取要占用网格中所有可用空间的列的ID。我将从网格中删除setautoheight和setautowidth。

    我不确定您是否正在尝试实现固定宽度布局或将根据浏览器的高度/宽度展开的灵活布局。下面是我通常所做的,我希望我的网格占据所有的高度和宽度,并在页面上滚动。希望这有帮助。

    ——Vinny

        Viewport viewport = new Viewport();
        viewport.setLayout(new BorderLayout());
    
        ContentPanel center = new ContentPanel();
        center.setFrame(false);
        center.setLayout(new FitLayout());
        center.add(grid);
    
        4
  •  0
  •   cupakob    14 年前

    可以尝试使用css(setstyle/setcolumnstylename)设置网格/列的样式,然后可以使用100%作为宽度。

    古巴

        5
  •  -1
  •   bkg    14 年前

    可能现在太迟了,但我尝试将网格的AutoHeight和AutoWidth属性设置为false,并将其与设置AutoExpandColumn结合使用(我不需要更改默认的AutoFill值)。

    grid.setAutoHeight(false);
    grid.setAutoWidth(false);