Devexpress XtraList сделать дочерние узлы родительскими узлами?

У меня есть XtraTreeList с несколькими родительскими узлами, к каждому родительскому узлу добавлено несколько дочерних узлов.

Что я хочу, чтобы извлечь все дочерние узлы из своих родителей, удалить родительские узлы, а затем связать все эти дочерние узлы как родительские. Короче говоря, я хочу удалить родительские узлы и сделать все дочерние узлы родительскими узлами.

Я пробовал несколько способов, таких как использование TreeList.MoveNode(), но это не сработало для меня.

Редактировать:

Я удалил свой предыдущий ответ и добавил новый, который отлично работает.

1 ответ

Работа, которую я сделал, заключалась в том, что я выбрал все узлы из кода и вызвал DeleteSelectedNodes(), вот код:

            List<int> nodeIdsToMove = new List<int>();
        List<int> nodeIdsToRemove = new List<int>();

        if (comboBox_GroupBy.SelectedItem.ToString() == "None")
        {
            /* Parent nodes */
            foreach(TreeListNode parentNode in treeList_Links.Nodes)
            {
                nodeIdsToRemove.Add(parentNode.Id);
                if (parentNode.HasChildren)
                {
                    /* Child nodes */
                    foreach (TreeListNode childNode in parentNode.Nodes)
                        nodeIdsToMove.Add(childNode.Id);
                }
            }

            MoveNodes(nodeIdsToMove);
            RemoveNode(nodeIdsToRemove);

А вот реализация MoveNode и RemoveNode:

        private void MoveNodes(List<int> nodeIdsToMove)
    {
        foreach (int nodeId in nodeIdsToMove)
            treeList_Links.MoveNode(treeList_Links.FindNodeByID(nodeId), null);
    }

private void RemoveNode (List nodeIdsToRemove) {/ * Enalbe multiselect * / treeList_Links.OptionsSelection.MultiSelect = true;

        /* Get nodes to select */
        ArrayList nodesToSelect = new ArrayList();
        foreach (int nodeId in nodeIdsToRemove)
            nodesToSelect.Add(treeList_Links.FindNodeByID(nodeId));

        /* Select nodes */
        treeList_Links.Selection.Set(nodesToSelect);

        /* Delete selected nodes */
        treeList_Links.DeleteSelectedNodes();

        /* Disable multiselect */
        treeList_Links.OptionsSelection.MultiSelect = false;
    }
Другие вопросы по тегам