0

我在 TreeGrid 中有一棵树,这棵树有不同的节点。

我想要的是在特定节点(即最喜欢的节点)内添加选定的记录(我有记录)。

我可以实现的只是在 TreeGrid 中添加记录,但它应该插入到特定节点中(比如说我的 treeGrid 中的第一个节点)。

我怎样才能做到这一点?

代码片段:

private AnimateTreeNode favoriteNode = new AnimateTreeNode("My Favorites");

    TreeGrid clientTreeGrid = new TreeGrid(); 
    Tree clientTree = new Tree(); 

    clientTree.setModelType(TreeModelType.CHILDREN);  
    clientTree.setNameProperty("My space");  
    clientTree.setRoot(new AnimateTreeNode("fav",favoriteNode);

    clientTreeGrid.setData(clientTree);  
    clientTreeGrid.setCanReparentNodes(false);  
    clientTreeGrid.setSelectionType(SelectionStyle.SINGLE);

    favoritesMenuItem.addClickHandler(new ClickHandler() {  
    public void onClick(MenuItemClickEvent event) {  
        UserRecord record = (UserRecord) userGrid.getSelectedRecord();
        categoryTree.addData(record);        
    }  
});
4

2 回答 2

1

UserRecord 似乎是来自其他组件(即 UserGrid)的记录。所以你可以在这里做的是,从所选记录的信息中形成一个节点并将其添加到树中。请让我知道这对你有没有用。

编辑:以下代码片段可能会进一步帮助您。

TreeGrid sampleTreeGrid = new TreeGrid();
    sampleTreeGrid.setShowHeader(false);
    TreeGridField sampleTreeGridField = new TreeGridField("testMenu", " ");

    TreeNode rootNavNode = new TreeNode("root");
    rootNavNode.setAttribute("testMenu", "root");

    TreeNode testNode = new TreeNode();
    testNode.setTitle("Test Node");
    testNode.setAttribute("testMenu", "Test Node");



    Tree mainTree = new Tree();
    mainTree.setRoot(rootNavNode);

    mainTree.setModelType(TreeModelType.PARENT);
    mainTree.setNameProperty("mainTreeTitle");
    mainTree.add(testNode, mainTree.getRoot());

    sampleTreeGrid.setData(mainTree);
    sampleTreeGrid.setFields(sampleTreeGridField);

这里的关键部分是分配创建的节点。不要将记录直接添加到 TreeGrid。您应该从用户网格中的选定记录创建一个新的树节点,然后将该节点添加到您希望的位置。

于 2013-01-09T08:14:26.180 回答
0

您必须阅读您选择的记录并使用您感兴趣的记录字段的值设置新节点的不同属性。之后,您将新节点添加到Tree并将树形网格的数据设置到您的Tree. 如果你想添加一些,一个节点会得到一个 Title、Name Id 和你的属性。AListGridRecord没有这些属性。我认为没有一种自动的方法可以做到这一点。

于 2013-01-10T14:12:25.577 回答