Один узел за раз, в TreeView - PullRequest
       21

Один узел за раз, в TreeView

0 голосов
/ 10 января 2012

У меня дерево выглядит так:

    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;

Но это не работает.

Ответы [ 3 ]

2 голосов
/ 10 января 2012

Поскольку никто не дал мне ответа или правильного предложения, после попытки и некоторых исследований я получил решение. Отправляя это, НАДЕЖДА, ЭТО ПОМОГАЕТ ДРУГИМ.

На событии Expand узла (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: - Никогда не комментируйте, если вы не достойны даже копейки.

Спасибо, StackOverflow.

1 голос
/ 10 января 2012

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

0 голосов
/ 22 января 2015

ЛУЧШИЙ ОТВЕТ ДЕЙСТВИТЕЛЬНО ЭТО РАБОТАЕТ, если один родительский узел расширяется, другой родительский узел получит коллапс.

В C #:

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

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