1
データベースクエリからC#ツリービューを作成しようとしています。クエリからTreeViewを設定する
データベースはこのようなものに構成されています。
-----------------------------------------------
| PARENT_NODE | CHILD_NODE | LEVEL | NAME |
-----------------------------------------------
| 1 | 2 | 1 | name1 |
-----------------------------------------------
| 1 | 4 | 1 | name2 |
-----------------------------------------------
| 2 | 6 | 1 | name4 |
-----------------------------------------------
| 2 | 3 | 2 | name3 |
-----------------------------------------------
| 3 | null | 3 | name5 |
-----------------------------------------------
はdatabseクエリを変更することはできません。
ツリービューの表現としては、このようになります。
name1
|---- name3
| |---- name5
name2
|
|
name4
私はこれと同様の問題を抱えている他のものを探すようにしました。しかし、これらの例は従うのが難しく、通常私のためには機能しません。私はそれを間違って実装したか、私の状況ではうまく動作しません。
私の最近の試みは、ループ内でループを作って子供を反復し、それらを親に関連付けることでした。しかし、代わりに何も表示されませんでした。
// Nodes
TreeNode rootNode = new TreeNode("root_NAME");
TreeNode parent = new TreeNode();
TreeNode child = new TreeNode();
foreach (DataRow dr in dt.Rows)
{
if (dr["LEVEL"].ToString() == "1")
{
parent = new TreeNode(dr["NAME"].ToString());
rootNode.Nodes.Add(parent);
//TreeView.traceTreeView.Nodes.Add(node);
}
else
{
// Search for where child_node == parent_node and add that node
List<TreeNode> childList = new List<TreeNode>();
foreach (DataRow cr in dt.Rows)
{
if (cr["PARENT_NODE"].ToString() == dr["CHILD_NODE"].ToString())
{
childList.Add(child = new TreeNode(cr["NAME"].ToString()));
}
}
TreeNode[] childArray = childList.ToArray();
TreeNode node = new TreeNode(dr["NAME"].ToString(), childArray);
parent.Nodes.Add(node);
}
}
誰かが私がテーブルを反復処理し、親ノードと子ノードを関連付けてツリービューに追加する方法を教えてもらえますか?
ない答えを私は 'AVLのtrees'が役立つかもしれません見上げると思います。 – thanatorr
'NAME'はどのノードを参照していますか?親ノードまたは子ノード?サンプルデータに基づいて変化するようです。 'LEVEL'も' name1'と 'name2'は同じレベルですが、ネストする必要があると言っているので意味がありません。 –
フォームツリーはあなたがそう思っていたとは思わない。私は実際にあなたの表現に基づいて表示しようとしていることを実際に理解していません。 – Kilazur