いつも参考にさせて頂いてます。
早速ですが、DBの値をTreeViewを使用して表示したいと思っています。
DBには、
CD 機能1 機能2 機能3
CD1 A1 B1 C1
CD1 A1 B2 C2
CD1 A1 B2 C3
CD2 A2 B3 C4
見たいな感じでデータが登録されています。
これをTreeViewに、
CD1
LA1
LB1
| LC1
LB2
LC2
LC3
CD2
LA2
LB3
LC4
と出力させたいのですが、どうしたらよいか見当もつきません。
いろいろ調べて再帰呼び出しで出来るんじゃないかと思うのですが、
再帰処理にに詳しくない為、先に進むことが出来ません。
どうしたら実現できるか、力をお貸しください。
宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
No.2 です。
> 'System.Web.UI.WebControls.~~'
すいません。TreeViewって、Windowsアプリの TreeView (System.Windows.Forms.TreeView) ではなかったのでしょうか?私すっかりWindowsアプリだとばっかり考えておりました。すみません。。。
上記のクラスをお使いということは、Web アプリ(ASP.NET?)でしょうか。であれば、私は門外漢なので、お答えできません(^^;。
ASP.NET はよく知らないのですが、取り急ぎ、ASP.NETでの TreeView 作成に参考になりそうなサイトだけ見つけたので書いておきます。以下のサイトから、「IE WebBrowserコントロール」の、「TreeView」に関する記述をご参照ください。
http://www.atmarkit.co.jp/fdotnet/dotnettips/ind …
また、ASP.NET には 以下のカテがあり、そちらの方がご回答いただけると思いますので、カテを変えてご質問されることをお勧めいたします。
プログラミング > Microsoft ASP
http://oshiete1.goo.ne.jp/c249.html
お役に立てずすみません。
No.3
- 回答日時:
# 開発の環境も書きましょう ...
VB6の場合
On Error Resum nextでトラップしながらノードを追加するのが簡単なようです
便宜的に 配列にデータがあるとします ...
oData(3,3) に ご質問のデータが格納されているとします
' ルート部分
for n=0 to 3
on error resume next
TreeView1.Nodes.Add ,, oData(n,0),oData(n,0)
on Error goto 0
next
' 子ノードの追加
for n=1 to 3
for m=0 to 3
on error resume next
TreeView1.Nodes.Add oData(n-1,m), tvwchild, odata(n, m), oData(n,m)
on error goto 0
next
next
' ツリーの展開
for each oNode in TreeView1.Nodes
oNode.Expaneded = true
next
といった具合です ...
No.2
- 回答日時:
No.1です。
すいません。よくよく考えたら、ここはVisual Basic のカテでしたね(恥)。さっきのは無視してください。基本は、ノードがなければ追加して、あれば既存のものを使用する、という単純なループ処理でいけました。
ノードのある・なしは、IndexOfKeyというメソッドで判定します。
Addメソッドは変数の種類によりいくつか使い分けられますが、今回は .Add(key, text) を使っています。(あとでKey検索するため。)
下の階層に行くときは、上の階層を nodes という変数に置き換えています。
サンプルコードを載せておきます。VB.NET 2005 で作っています。
Private Sub CreateTreeView()
Dim db As String(,) = {{"CD1", "A1", "B1", "C1"}, _
{"CD1", "A1", "B2", "C2"}, _
{"CD1", "A1", "B2", "C3"}, _
{"CD2", "A2", "B3", "C4"} _
}
Dim nodes As TreeNodeCollection = TreeView1.Nodes
For I As Integer = 0 To db.GetUpperBound(0)
nodes = TreeView1.Nodes
For J As Integer = 0 To db.GetUpperBound(1)
Dim index As Integer = nodes.IndexOfKey(db(I, J))
If index = -1 Then
nodes = nodes.Add(db(I, J), db(I, J)).Nodes
Else
nodes = nodes.Item(index).Nodes
End If
Next
Next
End Sub
以上、ご参考までに。
この回答への補足
早速のご回答、ありがとうございます。
こちらの環境もVB.NET 2005 で作っていますが、
サンプルコードを試してみた所、下記3箇所でエラーになってしまいました。
>Dim index As Integer = nodes.IndexOfKey(db(I, J))
'IndexOfKey'は 'System.Web.UI.WebControls.TreeNodeCollection' のメンバではありません。
>nodes = nodes.Add(db(I, J), db(I, J)).Nodes
型 'String' の値を 'System.Web.UI.WebControls.TreeNode' に変換できません。
>nodes = nodes.Item(index).Nodes
'Nodes' は 'System.Web.UI.WebControls.TreeNode' のメンバではありません。
何か設定しないといけないのでしょうか?
重ねてお願い致します。
No.1
- 回答日時:
すみません。
補足をお願いします。開発環境は何をお使いでしょうか?
VB.NET なら、お手伝いできるかも知れません。
(再帰を使った方法ではありませんが。。。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- Excel(エクセル) スプレッドシートについて A1÷B1の値をC1に、A2÷B2をC2、A3÷B3をC3…といった感じで 1 2022/05/17 20:24
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
- Excel(エクセル) エクセルについての質問です A1に入力した数字をB1に入力した数字に+して C1に出した時に、B2に 4 2022/12/09 21:57
- Excel(エクセル) Google Spreadsheetのカスタム表示形式について 2 2023/05/20 09:10
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- Excel(エクセル) 時間差を求めるマクロコードを教えてください。 4 2022/05/17 18:22
- 数学 a1,a2, a3をベクトル空間Vのベクトルとする。a1+a2,a2+a3,a3+a1が一次独立のと 2 2022/10/02 15:55
- Excel(エクセル) エクセルを活用した受注表作成の中で関数・数式を教えてください。 3 2022/07/23 08:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CPUの考え方を教えてください ...
-
SNMP リンクダウンとノードダ...
-
同じタグ名の項目取得
-
ツリービューのノードをダブル...
-
ルート要素ノードが2個ある場合?
-
【C#】TreeViewがクリックされ...
-
VB6.0でDOMを使用して...
-
xpath でn番目のテキストノード...
-
昔Winnyってありましたけど、あ...
-
C++Builder 6でツリービュー(...
-
ノードとは
-
バッチファイルでテキストファ...
-
XMLファイル内のデータ(値)を変...
-
htmlに変換されない
-
UTF-8でエンコーディングとはど...
-
VB6でXMLを作成しているのです...
-
特殊記号が勝手にエスケープさ...
-
xmlstarletで他ファイルからエ...
-
XSLTでの正規表現判定
-
VBでXMLファイルを作ると xmlns...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPUの考え方を教えてください ...
-
SNMP リンクダウンとノードダ...
-
同じタグ名の項目取得
-
昔Winnyってありましたけど、あ...
-
コンテキストメニュークリック...
-
ルート要素ノードが2個ある場合?
-
マスターノード
-
複数のマックPCによる数値計算...
-
あるノードリストに、特定の名...
-
TreeView の初期表示について
-
TreeViewの再表示のちらつきを...
-
ツリービューのノードをダブル...
-
C# TreeView 効率良いノード追...
-
ノード数とは?
-
XML文書の指定した属性値を持つ...
-
C#のツリービューでツリーノー...
-
VB6.0でDOMを使用して...
-
TreeViewで複数ノードの選択は...
-
ノードとは
-
VisualBasic.net(2008) ツリー...
おすすめ情報