我在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);
}
});
答案 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
没有这些属性。我不认为有这样做的自动方式。