允许滚动和排序到GWT网格

时间:2011-11-09 08:21:34

标签: sorting gwt scroll grid scrollbar

美好的一天。我正在使用GWT Grid创建一个包含表格的应用程序。现在,当rowCount大于15时,我希望我的GWT Grid有一个scrollbar。标题不是可滚动区域的一部分。

我的问题是:

  1. 如何在不包含标题的情况下启用表/网格内容滚动?
  2. 如何让我的表格标题看起来像一个按钮,用户可以点击它来对特定列进行排序?
  3. 我的当前代码将允许在rowCount>时滚动15包括标题。请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:6)

也许是时候切换到单元格小部件和DataGrid。

  1. Javadoc
  2. Live example (with code)
  3. 关于cell widgets的文档,以及如何做column sorting(DataGrid几乎就像一个CellTable)。

答案 1 :(得分:0)

<强>滚动

我不会用这篇文章深入研究GWT,但我会尝试提供一些关于如何进行滚动部分的提示。

如果你的表的数据被包装在一个单独的标签而不是表的主体,那么它应该不是问题。如果表的结构类似于以下内容,则不应该是一个问题:

<table>
    <thead>
        <tr>
            <th>ColumnHeader1</th>
            <th>ColumnHeader2</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th>Data1</th>
            <th>Data2</th>
        </tr>
    </tbody>
</table>

要使数据部分可垂直滚动,您应该为<tbody>元素添加CSS样式,当行数大于15时,该元素设置overflow-y: scroll;。此外,您需要设置高度或限制它的高度高度通过其他方式(包装容器)显示滚动条。

要设置高度,我会考虑在添加第15行后立即获得<tbody>的偏移高度,并强制它保持不变。它可能是这样的:

tbodyElement.setHeight(tbodyElement.getOffsetHeight());

请记住,这必须在添加第15行后立即完成。

<强>分拣

为此,您应该将列标题名称包装在某种Widget中。例如,它可以是HTMLLabel。你只需要向它们添加ClickHandler和一些样式来填充整个单元格,并将光标切换到CSS cursor: pointer;上的一只手,同时将鼠标悬停在它上面。

<强>结论

嗯,这是我对此的简要概述。如果没有看到你已经完成的代码,就很难再进一步了。