我有这个问题。我正在尝试在运行时使用Treeview。我正在尝试添加一个子节点并使用EF将其存储到数据库中。
现在的问题是,数据库在检索时如何将其放置为子节点?
例如,我有一个名为Users的根节点,在该Users下,有一个名为“名称”的子节点。如果我将鼠标放在子节点上,则说“名称”,也许有一个表格可以在“名称”下添加一个子节点,并将其命名为“ Godymn”。数据库如何处理此问题并知道如何将其放置为子子节点? 到目前为止,当我尝试在“名称”中添加一个子节点时,它将其添加到“用户”下。但我希望在运行时将其添加到“名称”下。那就是我被困住的地方。
到目前为止,这是我的代码...。
using (DBModel db = new DBModel())
{
var q = (from i in db.test
select i);
TreeNode treeNode = new TreeNode("Users");
treeView1.Nodes.Add(treeNode);
foreach (var item in q)
{
TreeNode nodes = new TreeNode(item.title);
treeNode.Nodes.Add(nodes);
}
}
感谢任何帮助。
答案 0 :(得分:0)
TreeNode
对象需要从下至上添加(至少在代码中有意义);这不仅可以加快处理速度,而且可以保持代码的清洁和可读性。创建您的顶级节点,然后创建所有子节点。最后,将节点添加到它们各自的位置。
TreeNode users = new TreeNode("Users");
TreeNode names = new TreeNode("Names");
List<TreeNode> nodes = new List<TreeNode>();
foreach (var item in q)
names.Nodes.Add(new TreeNode(item.Title));
users.Nodes.Add(names);
treeView1.Nodes.Add(users);
关于数据库如何处理问题,您应该为子节点建立一个关系表,该表的列名为ParentNode
,该列可以是NULL
,Empty
或包含与父节点关联的Tag
。这可以帮助您以正确的方式构建事物。