2012-01-10 3 views
0

У меня есть вид дерева, как это:Один узел в то время, в TreeView

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

что вы пытались добиться этого? –

+0

означает? Я просто хочу, чтобы только один родительский узел должен был быть открыт одновременно. Все дочерние узлы (которые уже были расширены) всех других родительских узлов должны свернуть при расширении родительского узла. – Kings

+0

В комментарии спрашивается, что, если что-либо, * вы * имеете * уже пробовали *. Переполнение стека не является кодовым письмом. – AakashM

ответ

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: - Никогда не потрудился комментировать, если у г не достоин даже пенни.

Thanks StackOverflow.

1

В коде кода используется событие SelectedNodeChanged. Предполагая, что у вас есть TreeView, называемый TreeView1, перебирайте все узлы, сверните их все и затем разверните выбранный.

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

+0

Мое решение конечно не работает. Единственное, что я забыл, это то, что вы отправили C#, и я дал вам VB.NET. – mccrager

+0

Я не сказал, что ваше решение неверно. Только для моего конкретного случая (требования) он не давал желаемого результата. это оно. Ваш код может быть идеальным. – Kings

0

BEST ANSWER REALLY IT WORK OUT, если один родительский узел расширяется, другой родительский узел получит collpase.

В C#:

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

protected void Treeviewdata_TreeNodeExpanded(object sender, TreeNodeEventArgs 
{ 
    e.Node.SelectAction = TreeNodeSelectAction.Expand; 
} 
Смежные вопросы