0

我想删除节点并再次插入。此代码删除节点,但不添加。可以添加TreeListNodes (newNodes)TreeListNode (myNode)
我做错了什么?

TreeListNode myNode = treeList1.FindNode((node) => {
    return node["ColumnName"].ToString() == "test";
});

var child = myNode.Nodes;

TreeListNodes newNodes = new TreeListNodes(treeList1);

for (int i = child.Count - 1; i >= 0; i--) {
    newNodes.Add(child[i]);
    treeList1.DeleteNode((DevExpress.XtraTreeList.Nodes.TreeListNode) child[i]);
}

myNode.Nodes.Add(newNodes);
4

1 回答 1

0

据我所知,您正在尝试以相反的顺序重新排序特定节点的子节点。如果是这样,则不需要添加/删除节点,我建议您使用以下方法(MoveNode):

TreeListNode testNode = treeList1.FindNode(
    node => object.Equals(node["Name"], "test"));
TreeListNodes children = testNode.Nodes;
for(int i = children.Count - 1; i >= 0; i--)
    treeList1.MoveNode(children[i], testNode, false, position: 0);

替代方式(SetNodeIndex):

TreeListNodes children = testNode.Nodes;
for(int i = children.Count - 1; i >= 0; i--)
    treeList1.SetNodeIndex(children[i], 0);

ps 我已经使用最新(v17.1)版本测试了上述方法,该版本宣布了 TreeList API 的多项改进。

于 2017-05-18T09:02:19.527 回答