GWT CellTree滚动到任意节点

GWT CellTree滚动到任意节点,gwt,Gwt,我正在编写某种对象浏览器,用文件夹组织。当用户选择列表中的某个文件夹时,我必须在树中展开相应的节点。 我已经实现了树扩展,树中的元素选择,但扩展可能发生在树的一部分,该部分不在可见区域(CellTree位于滚动窗格上)。 因此,我确实有一个TreeNode-如何通过编程滚动使其可见 当前的API不可能做到这一点,但您可以尝试什么,我还没有测试过,但应该很简单: 对于树渲染和不可见标记中的每个对象,标识此对象,如 设置节点信息等时,请确保您有一个选择模型 当您知道要滚动到哪个对象时,调用yourS

我正在编写某种对象浏览器,用文件夹组织。当用户选择列表中的某个文件夹时,我必须在树中展开相应的节点。 我已经实现了树扩展,树中的元素选择,但扩展可能发生在树的一部分,该部分不在可见区域(CellTree位于滚动窗格上)。
因此,我确实有一个
TreeNode
-如何通过编程滚动使其可见

当前的API不可能做到这一点,但您可以尝试什么,我还没有测试过,但应该很简单:

  • 对于树渲染和不可见标记中的每个对象,标识此对象,如
  • 设置节点信息等时,请确保您有一个
    选择模型
  • 当您知道要滚动到哪个对象时,调用
    yourSelectionModel.setSelected(object,true)。这将展开树并显示选定的对象
  • 在此阶段,您要做的是:
  • Element cellTreeElement=yourCellTree.getElement();
    NodeList objectId=cellTreeElement.getElementsByTagName(“输入”);
    对于(int i=0;i另一个版本)(如果要将元素移动到CellTree的顶部):

    Element cellTreeElement=yourCellTree.getElement();
    NodeList objectId=cellTreeElement.getElementsByTagName(“输入”);
    对于(int j=0;j
    一些备注:最好滚动到某个可见元素,否则滚动(在我的例子中)会转到单元格顶部(我在单元格的render()中添加了标记的元素)。但可能我必须使用样式将此元素向下移动一点。关于第3点-调用“setSelected”是不够的-相反,我必须使用数据模型找到选定元素路径中的所有对象,然后使用“tree.getRootTreeNode”和“rootNode.setChildOpen(…)”遍历树。诀窍是“rootNode.setChildOpen”(…)以“树节点”的形式返回打开的孩子。再次非常感谢!
    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();
       }
    }
    
        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());
            }
        }