2012-01-10 71 views
0

我有一個樹視圖這樣的:一個節點時,在樹視圖

1. 


     1.1 

     1.2 

    2. 


     2.1 

     2.2 

.... 

我想要做到的是,當用戶點擊父節點(例如節點1)所有其他父節點崩潰換言之,除了選定的節點(節點1)之外,一次只擴展一個子樹。

我從數據庫填充菜單。 所以我在父節點填充部分中使用此代碼。

MenuTreeView.Nodes.Add(newNode); 
newNode.PopulateOnDemand = true; 
newNode.Collapse(); 
newNode.SelectAction= TreeNodeSelectAction.Expand; 

但這不起作用。

+0

你試圖達致這是什麼? – 2012-01-10 12:54:02

+0

的意思是? 我只想要一次只打開一個父節點。所有其他父節點的所有子節點(已擴展)都應該在展開父節點時崩潰 – Kings 2012-01-10 12:58:47

+0

該評論詢問什麼,如果有的話,*您*已*嘗試過*。堆棧溢出不是代碼寫入服務。 – AakashM 2012-01-10 13:03:10

回答

2

因爲沒人給我一個答案或向右建議,嘗試,做一些[R & d後,我得到了解決。 張貼它,希望它幫助其他人。

在(OnTreeNodeExpand)節點展開事件聲明如下: -

protected void Node_Expand(Object sender, TreeNodeEventArgs e) 
     { 

      if (e.Node.Parent == null) 
       return; 
      string strNodeValue = e.Node.Value; 
      foreach (TreeNode node in e.Node.Parent.ChildNodes) 
      { 
       if (node.Value != strNodeValue) 
        node.Collapse(); 
      } 

     } 

PS:@AakashM: - 從來就不願去評論如果u r不值得,甚至一分錢。

感謝StackOverflow。

1

在您的代碼隱藏中使用SelectedNodeChanged事件。假設您有一個名爲TreeView1的TreeView,請遍歷所有節點,全部摺疊它們,然後展開選定的節點。

Protected Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.SelectedNodeChanged 
     For Each tn As TreeNode In TreeView1.Nodes 
      tn.Collapse() 
     Next 
     TreeView1.SelectedNode.Expand() 
    End Sub 
+0

Thnx mccrager,試圖幫助。但它實際上並沒有解決我的問題。 – Kings 2012-01-10 15:02:33

+0

我的解決方案當然有用。我唯一忽略的是你發佈了C#,並且給了你VB.NET。 – mccrager 2012-01-10 15:21:03

+0

我沒有告訴你的解決方案是錯誤的。只是針對我的具體情況(要求),它沒有給出預期的結果。而已。你的代碼可能是完美的。 – Kings 2012-01-10 15:34:07

0

BEST ANSWER REIE IT IT WORK OUT,如果一個父節點展開,其他父節點將獲得collpase。

在C#:

PAGE LOAD() 
{ 
    Treeviewdata.CollapseAll(); 
} 

protected void Treeviewdata_TreeNodeExpanded(object sender, TreeNodeEventArgs 
{ 
    e.Node.SelectAction = TreeNodeSelectAction.Expand; 
}