2013-02-14 140 views
0

我有一個XtraTreeList與幾個父節點,每個父節點有幾個子節點附加到他們。Devexpress XtraList使子節點的父節點?

我想從他們的父節點中提取所有子節點,刪除父節點,然後將所有這些子節點作爲父節點進行綁定。總之,我想刪除父節點,並使所有的孩子作爲父節點。

我嘗試了幾種使用TreeList.MoveNode()的方法,但是這對我不起作用。

編輯:

我已經刪除了我以前的答案,並增加了新的一個工作正常。

回答

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 FPGA實現:

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

私人無效的removeNode(列表nodeIdsToRemove) { /* Enalbe多選*/ 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; 
    }