2011-01-12 21 views
3

Webアプリケーションのナビゲーションにハードコードされたハイパーリンクを使用していましたが、アプリケーションが成長して管理が難しくなっています。私はTreeViewコントロールで持っているものを置き換えることに決めましたが、見た目にいくつかの変更を加えたいと思います。.NETツリービューノードを展開する方法+/-

設定する必要のあるプロパティはありますか?ユーザーは+/-の代わりにテキストをクリックしてTreeViewノードを展開できますか? 私はすでにShowExpandColapseを 'false'に設定しています。

最終結果がMSDNサイトの左側にあるツリービューに似たものになることを希望します。

誰かが正しい方向に私を向けることができますか?

答えて

0

Clickイベントを処理し、現在選択されているツリーノードを特定し、そのExpandedプロパティを切り替えるだけで、コード内でこれを行う必要があると思います(私はこれをここで呼び出すと思います)。

+0

Iは、ページ分離コードをマスターするために、次のコードを追加しました:保護されたボイドTreeView1_SelectedNodeChanged(オブジェクト送信者、のEventArgs電子) {TreeView1.SelectedNode.SelectAction = TreeNodeSelectAction.Expand。 }しかし、ノードはまだ展開されていません。私がここで行方不明になっているものでなければならない。 –

+0

また、NavigateURLを持つノードをどのように扱うのだろうと思いましたか?それらはTreeViewのリンクとして表示されません。 –

+0

申し訳ありませんが、これはASP.NETの質問でした。私は見当もつかない。 – MusiGenesis

6

TreeNode.SelectActionを[展開]または[選択範囲]に設定します。

+0

私はこれで運がなかった。ノードの+/-アイコンが(テキストの代わりに)クリックされると、TreeNode.SelectActionが起動されることがありますか?たぶんこの問題を解決するには、JavaScriptを使う方が良いでしょう。 –

+0

@ Dr.Greenthumb:これを解決するためにJavaScriptを書く方法の例を教えてください。私の要件は、親ノード(テキスト自体)をクリックして子ノードを表示するときのデフォルトの親ノードのみを表示することです。 –

2

あなたは私たちが各ノードを取得して割り当てるために、以下のようにD再帰関数を書くことができるのTreeViewデータバインドイベントに

をtreviewするDBからXMLデータバインディングのソースまたは直接を使用することができます行動を彼らに広げる。

protected void TreeView1_DataBound(object sender, EventArgs e) 
{ 

    foreach (TreeNode node in TreeView1.Nodes) 
    { 
     node.SelectAction = TreeNodeSelectAction.Expand; 
     PrintNodesRecursive(node); 
    } 
} 


    public void PrintNodesRecursive(TreeNode oParentNode) 
    { 


     // Start recursion on all subnodes. 
    foreach(TreeNode oSubNode in oParentNode.ChildNodes) 
    { 
    oSubNode.SelectAction = TreeNodeSelectAction.Expand; 
    PrintNodesRecursive(oSubNode); 
    } 
} 
+0

この場合、再帰の代わりにOnTreeNodeDataBoundを使用できます。OnTreeNodeDataBound(オブジェクト送信者、TreeNodeEventArgs e){e.Node.SelectAction = TreeNodeSelectAction.SelectExpand;} – eloycm

関連する問題