0

我有一个ScrollTable动态填充的。(行和列是即时计算的并填充数据)。我的ScrollTable支持水平和垂直滚动。当我有很多列并且我水平滚动以查看数据时,我看到Header&DataTables的呈现方式未对齐。我怀疑 GWT 渲染发生得很慢,这导致了这个问题。

代码如下:

public class TestScrollTable implements EntryPoint {

    public FixedWidthGrid dataTable = new FixedWidthGrid(200,20);   
    public FixedWidthFlexTable headerTable = new FixedWidthFlexTable();
    public ScrollTable table = new ScrollTable(dataTable, headerTable);

    @Override
    public void onModuleLoad() {

        table.setColumnResizePolicy(ColumnResizePolicy.SINGLE_CELL);
        table.setResizePolicy(ResizePolicy.UNCONSTRAINED);
        table.setScrollPolicy(ScrollPolicy.BOTH);
        table.setSortPolicy(SortPolicy.SINGLE_CELL);
        RootPanel.get().add(table);

        for (int i = 0; i < 20; i++) {
            headerTable.setHTML(0, i, "Header " + i);
        }

        for (int i = 0; i < 200; i++) {
            for (int j = 0; j < 20; j++) {
                final int row = i;
                final int column = j;                         
                dataTable.setHTML(row, column, "Cell " + row + ":" + column);
            }
        }
        table.redraw();
    }

}

这个问题并不总是被看到。当我们运行上述代码并通过远程桌面使用 Web 应用程序时,有时在应用程序的部署版本中(当我有很多列并且需要水平滚动时),可以看到这一点。已处理数据的分页和排序。

我有以下解决方案作为解决方法:

当我调整标题表的大小时,整体ScrollTable会正确对齐。但是,如果以编程方式完成,这可能是一个性能问题。如果我们导航到其他浏览器选项卡并返回,则看不到问题。

附加信息:

  1. 我尝试使用 GWT css for ScrollTablewidget 并使用我的自定义 CSS 运行上述代码。
  2. DeferredCommand重绘之前试过用ScrollTable。上述情况没有产生任何结果。

我的应用程序使用 GWT 2.0.4。

4

1 回答 1

0

FixedWidthGridFixedWidthFlexTable并且ScrollTable不是 GWT 库的小部件,我猜您的应用程序正在使用 gwt-incubator,这是一个已弃用的项目,以前用于在小部件和新事物集成或未集成到 GWT 之前使用它们。

现代 GWT 版本包括改进的表格小部件,例如不存在该问题的CellTable 。我鼓励你将你的应用程序迁移到最后一个 gwt,因为:gwt-2.0.4 是几年前发布的,gwt-incubator 没有维护,所以很难从他们那里找到支持,我知道迁移可能很困难任务,但我认为这是值得的。在 gwt 邮件列表中查看此线程。

于 2013-10-20T08:35:43.787 回答