GWT CellTree滚动到任意节点

时间:2011-11-02 12:08:38

标签: gwt

我正在使用文件夹组织某种对象浏览器。当用户选择列表中的某个文件夹时,我必须在树中展开适当的节点。 我已经在树中实现了树扩展,元素选择,但是扩展可能发生在超出可见区域的树的一部分(CellTree在ScrollPane上)。 所以,我确实有TreeNode的实例 - 我如何以编程方式滚动以使其可见?

2 个答案:

答案 0 :(得分:2)

使用当前的API是不可能的,但您可以尝试,我没有测试过,但应该很容易:

  1. 对于树渲染中的每个对象和不可见标记,标识此对象,如<input type="hidden" id="yourObjectId"/>
  2. 确保在设置NodeInfo等时有SelectionModel
  3. 当您知道要滚动到的对象时,请致电yourSelectionModel.setSelected(object,true);。这应该展开树并显示您选择的对象。
  4. 在这个阶段你想要做的是:
  5. Element cellTreeElement = yourCellTree.getElement();
    NodeList<Element> objectIds = cellTreeElement.getElementsByTagName("input");
    for ( int i=0;i<elementsByTagName.getLength();i++ )
    {
       Element e = objectIds .getItem( i );
       if (e.getId().equals( yourObjectId ) {
         e.scrollIntoView();
       }
    }
    

    非常确定这应该可以正常工作。

答案 1 :(得分:0)

另一个版本(如果你想将元素移动到CellTree的顶部):

    Element cellTreeElement = yourCellTree.getElement();
    NodeList<Element> objectIds = cellTreeElement.getElementsByTagName("input");
    for (int j = 0; j < objectIds.getLength(); j++) {
        Element e = objectIds.getItem(j);
        if (e.getId().equals("r" + iDistrictID)) {
            yourCellTree.getElement().getParentElement().getParentElement().setScrollTop(e.getParentElement().getParentElement().getOffsetTop());
        }
    }