如何填充树视图? [英] how to populate treeview?

查看:25
本文介绍了如何填充树视图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表类别".它只是一个用户表,每个用户都用唯一的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆