如何填充树视图? [英] how to populate treeview?
本文介绍了如何填充树视图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个表类别".它只是一个用户表,每个用户都用唯一的 UserId 标识并有一个对应的 ParentId(指向他们老板的 UserId).如果是顶级用户,则 ParentId 设置为 0.有人可以帮我找出在树视图中填充此列表的最佳方法吗?
I have a table "Category".It is simply a table of users, where each are identified with a unique UserId and have a corresponding ParentId (pointing to their boss' UserId). If it's a top-level user, then the ParentId is set to 0. Can someone please help me figure out the best way to populate this list in a tree view?
推荐答案
如果你的意思是 WinForms 树视图,我会做这样的事情(跳过错误检查):
If you mean WinForms treeview I would do something like this (error checking skipped):
private void FillTreeView(object sender, EventArgs e)
{
// create fake datatable
DataTable dt = new DataTable();
dt.Columns.Add("UserId",typeof(int));
dt.Columns.Add("Name",typeof(string));
dt.Columns.Add("ParentId", typeof(int));
dt.Rows.Add(new object[] { 3, "Level_1_A", 2 });
dt.Rows.Add(new object[] { 4, "Level_1_B", 2 });
dt.Rows.Add(new object[] { 2, "Level_0_A", 0 });
dt.Rows.Add(new object[] { 5, "Level_2_A", 3 });
dt.Rows.Add(new object[] { 6, "Level_2_B", 3 });
dt.Rows.Add(new object[] { 7, "Level_0_B", 0 });
dt.Rows.Add(new object[] { 8, "Level_1_C", 7 });
// call recursive function
AddCurrentChild(0, dt, treeView1.Nodes);
}
private static void AddCurrentChild(int parentId, DataTable dt, TreeNodeCollection nodes)
{
var rows = dt.Select("ParentId = " + parentId);
foreach (var row in rows)
{
var userId = (int) row["UserId"];
var name = row["Name"] as string;
var node = nodes.Add(userId.ToString(), name.ToString());
node.Tag = row; // if you need to keep a row reference on the node
AddCurrentChild(userId, dt, node.Nodes);
}
}
这篇关于如何填充树视图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文