我有一个带有多个父节点的XtraTreeList,每个父节点都附加了几个子节点。
我想从父节点中提取所有子节点,删除父节点,然后将所有这些子节点绑定为父节点。简而言之,我想删除父节点并将所有子节点作为父节点。
我尝试了几种方法,比如使用TreeList.MoveNode(),但这对我不起作用。
编辑:
我删除了之前的答案并添加了新的答案。
答案 0 :(得分:0)
我所做的工作是我从代码中选择了所有节点,并调用了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;
}