SmartGWT:如何在树的特定节点内添加记录

时间:2013-01-08 08:18:41

标签: smartgwt

我在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);        
    }  
});

2 个答案:

答案 0 :(得分: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。您应该从用户网格中的选定记录创建一个新树节点,然后将该节点添加到您希望的位置。

答案 1 :(得分:0)

您必须阅读所选记录,并使用您感兴趣的记录字段的值设置新节点的不同属性。之后,将新节点添加到Tree并设置您的treegrid的数据到Tree。如果要添加一些节点,节点将获得标题,名称标识和您的属性。 ListGridRecord没有这些属性。我不认为有这样做的自动方式。