- - PR -
TreeView Web Controlsについて
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-09-11 18:51
こんにちわALADDINです。
Web ControlsのTreeViewコントロールについてなのですが、 現在foreachによって親ノードに対し子ノードを追加していますが、 階層が深くなればなるほどforeachの方の階層も深くなっていきます。 何かうまい方法はないでしょうか? 階層が深くなってもforeachの階層自体はせいぜい2,3ぐらいまでにしたいのですが [ メッセージ編集済み 編集者: ALADDIN 編集日時 2002-09-12 10:36 ] | ||||||||
|
投稿日時: 2002-09-11 19:20
こんにちは。 いまいち話が見えないのですが、親ノード分ループしてそれぞれ子ノードを追加し、次はそれぞれの子ノード分ループして、孫ノードを追加して、というようなことをなさっているのでしょうか? 具体的に今はどのようなコードで実現なさっているのでしょう。 | ||||||||
|
投稿日時: 2002-09-12 09:54
ALADDINです。
DaikiRyutoさんレスありがとうございます。 判りにくい内容ですいません。 現在のソースはこんな感じです。 MSDNのサンプルが元なのですが、現在はこれでツリー階層が2段階です foreach (DataRow rowB in ds.Tables["B"].Rows) { nodeB = new TreeNode(); nodeB.Text = rowB["aaa"] + ", " + rowB["bbb"]; tree1.Nodes.Add(nodeB); foreach (DataRow rowC in rowB.GetChildRows("D")) { nodeC = new TreeNode(); nodeC.Text = rowC["xxx"].ToString(); nodeB.Nodes.Add(nodeC); } } | ||||||||
|
投稿日時: 2002-09-12 09:55
あうう、インデントが・・・
見にくくてすいませんTT | ||||||||
|
投稿日時: 2002-09-12 10:29
一般的に、最上位のノードのみ保持して、子ノードは再帰呼び出しで処理します。これは、C言語のバイブル、KR本でいうところの、dirwalkのところをまねすればいいでしょう。 整形ずみ文書は、角括弧で(code)PG(/code)とすれば、上記のようになります。詳しくは、投稿時の下の「オプション」で、「BBコード」をクリックしてください。 | ||||||||
|
投稿日時: 2002-09-12 10:47
ネストを深くしないだけが望みなら再帰でいけるかも?
ただ、可読性の点でどうかはわかりません。 以下、適当に書いてみました。 (コンパイルしてません。すいません。) 列名が違うとか、リンクをするとかするならば、もっと色々考えないといけないですが。 protected Microsoft.Web.UI.WebControls.TreeView tree1; private void Page_Load(object sender, System.EventArgs e) { // ここでDBからデータ取得したり色々やる // .......... foreach (DataRow row in ds.Tables["HOGE_TABLE"].Rows) { node= new TreeNode(); node.Text = row["HOGE"].ToString(); tree1.Nodes.Add(node); TestMethod(node, row.GetChildRows("HOGE_A"), 0); } } private int depth = 10; // 深さを示す適当な値 private void TestMethod(TreeNode, node, DataRow dataRow, int currentDepth) { TreeNode newNode = new TreeNode(); newNode.Text = dataRow["HOGE"].ToString(); node.Nodes.Add(newNode); currentDepth++; if (currentDepth < depth) { TestMethod(newNode, rowB.GetChildRows("HOGE_A"), cnrrentDepth); } } 外していたらごめんなさい。 | ||||||||
|
投稿日時: 2002-09-12 12:58
ALADDINです
Jittaさん、DaikiRyutoさんレスありがとうございます 両方試してみて簡単そうな方を選んでみます。^^; | ||||||||
1
