如何刷新GWT中的表而不关注焦点?

时间:2011-09-01 21:29:21

标签: internet-explorer gwt internet-explorer-6

我正在使用Google Web Toolkit(GWT)2.1。

我有一个GWT网格(实际上只是一个HTML表格),我用它来输入数据。单击网格外部的某些元素时,它会更改网格中的内容。我正在添加/删除CSS样式,以根据网格外部选择的内容隐藏网格中的某些行。我添加和删除的样式如下所示:

.thegrid .hiderow, .thegrid .hiderow div, .thegrid .hiderow td, .thegrid .hiderow *, .thegrid .hiderow input {
    display: none;
    overflow: hidden;
    height: 0;
}

我必须这样做才能让IE6正确隐藏行。一切正常,IE6除外(惊喜,惊喜)。在IE6中,行被正确隐藏,但是当我删除样式后应该再次显示行时,表会保持隐藏行时的缩小大小。当我通过点击它给表焦点时,它然后调整表的大小并向我显示所有行。

在我从元素中删除“hiderow”样式后,有没有办法让我在IE6中将表扩展到正确的大小?我不想让表焦点,因为焦点应该放在用户在表外部单击的元素上。

1 个答案:

答案 0 :(得分:0)

您可以使用JavaScript作为变通方法来设置行可见性,而不是使用CSS来隐藏行。在GWT中,其工作原理如下:

int row = ...;
Grid table = ...;
if(shouldEnableRow(row)) {
    table.getRowFormatter().setVisible(row, true);
} else {
    table.getRowFormatter().setVisible(row, false);
}

这转换为DOM上的JavaScript调用。假设通过CSS设置可见性将产生相同的效果,并且它在我们测试的每个浏览器中都有,除了IE6和IE7。