C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: ASP.NET4.0 TreeView ノード追加作成


(過去ログ 97 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■57737 / inTopicNo.1)  ASP.NET4.0 TreeView ノード追加作成
  
□投稿者/ *aka*aka* (2回)-(2011/03/11(Fri) 12:57:15)

分類:[ASP.NET (VB)] 

【(開発環境) Win7 Pro+ASP.NET4.0(VB):VWD2010 Express】
WEBフォームにtreeviewを配置し、データベースから取得した内容で親&子のノードを作成したいのですが。ある特定のノードを指定し、

そのノードを親とし→子ノードを作成する時、「ある特定のノードを指定」という部分はどのようにVBで記述すれば良いのでしょうか。

補足TreeView1.Nodes.Add(New TreeNode("テスト1"))
TreeView1.Nodes.Add(New TreeNode("テスト2"))

Dim aaa As New TreeNode("テスト1")

TNode_sub1.Text = "テスト1-1"
aaa.ChildNodes.Add(TNode_sub1)

引用返信 編集キー/
■57741 / inTopicNo.2)  Re[1]: ASP.NET4.0 TreeView ノード追加作成
□投稿者/ shu (509回)-(2011/03/11(Fri) 14:10:54)
> ある特定のノードを指定し、
探し方が分からないということですか?

Dictionary(of T, TreeNode)に各Nodeを格納しておいてキーで検索するといいです。
※TはDBテーブルのキーと型をあわせるとよいです。
引用返信 編集キー/
■57744 / inTopicNo.3)  Re[2]: ASP.NET4.0 TreeView ノード追加作成
□投稿者/ *aka*aka* (4回)-(2011/03/11(Fri) 14:17:39)
No57741 (shu さん) に返信

例えばですが、
**********
TreeView1.Nodes.Add(New TreeNode("テスト1"))
TreeView1.Nodes.Add(New TreeNode("テスト2"))
**********
のように「TreeView1」に対しノード「テスト1」「テスト2」を追加後に、
ノード「テスト1」の子ノードとして「テスト1-1」を追加したい時、
具体的にどのように記述すれば良いのか分かりません。

Dictionary(of T, TreeNode)を使用すれば、
どのように記述すれば良いのでしょうか。
引用返信 編集キー/
■57745 / inTopicNo.4)  Re[3]: ASP.NET4.0 TreeView ノード追加作成
□投稿者/ shu (511回)-(2011/03/11(Fri) 14:31:59)
No57744 (*aka*aka* さん) に返信
> ■No57741 (shu さん) に返信
>
> 例えばですが、
> **********
> TreeView1.Nodes.Add(New TreeNode("テスト1"))
> TreeView1.Nodes.Add(New TreeNode("テスト2"))
> **********
これなら
Dim ndTest1 as New TreeNode("テスト1")
Dim ndTest2 as New TreeNode("テスト2")
TreeView1.Nodes.Add(ndTest1)
TreeView1.Nodes.Add(ndTest2)
とすればndTest1,ndTest2への追加ということで可能です。

このノードがたくさんあってこんな書き方は出来ないということであれば

Dim dicNode as new Dictionary(of String, TreeNode)

'--- 親ノード追加ループ
do while (〜)
Dim nd as New TreeNode(〜)
Dim strKey as string = 〜 なんらかのキー項目

dicNode.add(strKey, nd)
TreeView1.Nodes.Add(nd)
  〜
Loop

'--- 子ノード追加ループ
do while (〜)
Dim strPKey = 〜なんとかしてキーを取得
Dim ndP = dicNode(strPKey)
Dim ndC as New TreeNode(〜)

ndP.ChildNodes.Add(ndC)

loop

こんな感じ。
引用返信 編集キー/
■57746 / inTopicNo.5)  Re[4]: ASP.NET4.0 TreeView ノード追加作成
□投稿者/ *aka*aka* (5回)-(2011/03/11(Fri) 15:00:09)
No57745 (shu さん) に返信
> ■No57744 (*aka*aka* さん) に返信
>>■No57741 (shu さん) に返信

度重なるご回答ありがとうございます。
実際、試せば無事に思い通り動作しました。
非常に助かりました。

したいことが、TreeViewのノード項目をデータベースの内容から取得し、
そのページを開いた時に左側がTreeView、右側がListViewのようなデータ一覧画面を想定してます。

このようなTreeViewノード作成のは、Page_Init()に記述するものでしょうか。
もしくはPage_Load()に記述するものでしょうか。

引用返信 編集キー/
■57747 / inTopicNo.6)  Re[5]: ASP.NET4.0 TreeView ノード追加作成
□投稿者/ shu (512回)-(2011/03/11(Fri) 21:47:52)
No57746 (*aka*aka* さん) に返信

> このようなTreeViewノード作成のは、Page_Init()に記述するものでしょうか。
> もしくはPage_Load()に記述するものでしょうか。

Page_Initだと情報が足りないこともあるのでPage_Loadで行った方がいいかも。
PostBack時にもLoadが動くので注意した方がいいです。
引用返信 編集キー/
■57750 / inTopicNo.7)  Re[6]: ASP.NET4.0 TreeView ノード追加作成
□投稿者/ *aka*aka* (1回)-(2011/03/13(Sun) 00:44:57)
No57747 (shu さん) に返信
> ■No57746 (*aka*aka* さん) に返信
>
> Page_Initだと情報が足りないこともあるのでPage_Loadで行った方がいいかも。
> PostBack時にもLoadが動くので注意した方がいいです。

たしかにPage_Load()に記述すれば、PostBack時にもLoadが動いてしまいました。

今回作成したいのは3階層あるTreeViewで、
クリックした該当ノードのみをその都度Addし展開していくようなものです。

Page_Load()にはTreeView.Clear後に第1階層目のみノード追加するところを記述し、
ノード選択時イベントに該当ノード配下にAddしていくようなものを記述し、
実際動作させると該当ノードクリック後に、一度TreeViewが最初の閉じられた状態に戻り、
再びノード展開するとノード配下にAddされているのが確認出来ましたが、
スムーズなTreeView動作をさせるためには、TreeViewが一度初期の状態に戻ることなく
クリック後に次配下にAddされたノードが展開されるようなものはどのように記述すれば良いのでしょうか。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -