3

是否可以在 java GWT 中隐藏网格面板的完整单元格?

现在我详细解释我的问题:我有一个带有一些标签和文本框的网格,我想隐藏中间标签和文本框,但是当我将visible属性设置为false时,它​​会隐藏 2 个对象,但会在2 行。如何将这些对象设置为可见并且将其他对象设置为向上移动,以便两行之间没有空格?

GWT 设计视图

http://s11.postimg.org/jc05zgjkj/gwt_grid_01.png

lblName.setVisible(false);
txtbxName.setVisible(false);

将可见属性应用为false后查看

http://s15.postimg.org/dnkd2927v/gwt_grid_02.png

非常感谢你的帮助

4

3 回答 3

1

要隐藏整行,您可以使用:

grid.getRowFormatter().setVisible(rowIndex, false);
于 2013-11-13T21:36:24.437 回答
1

希望您需要从 DOM 中隐藏元素:可以通过更改行元素的 Display 属性来完成。

示例代码 *

Grid g = new Grid();
int rowNumberToHideFromDom;
g.getRowFormatter().getElement(rowNumberToHideFromDom).getStyle().setDisplay(Display.NONE);
于 2013-11-16T06:03:39.653 回答
0

查看您的 GWT 代码在浏览器中生成的 HTML 表(最好在 visible 设置为 false 时)。您可能会看到如下内容:

<tbody>
  <!-- ... -->
  <tr> <!-- hidden row -->
    <td><!-- hidden widget --></td>
    <td><!-- hidden widget --></td>
    <td></td> <!-- The single space within the td element bears importance! -->
  </tr>
  <!-- ... -->
</tbody>

该空白被填充,因为隐藏行仍然包含一个或多个具有一些空白内容的 td 元素。

这是由 Grid 小部件的“空”单元格实现引起的:当您没有为 Grid 的单元格设置任何内容或清除先前设置的内容时,该实现实际上会在该单元格中插入一个不间断空格 (nbsp)。(查看 Grid 源代码:addRows()、clearCell() 和 createCell()。)

可以通过手动将空单元格的 innerHTML 设置为空字符串来欺骗此默认行为:

grid.setHTML(2, 3, "");

另外,我猜united的评论中提到的grid.removeRow(row)解决方法也可能有效,尽管删除整行有点激进如果你打算再次显示隐藏的行,你最好坚持通过设置为空来解决这个问题字符串到空单元格。

于 2016-01-14T14:55:31.180 回答