填充TreeView - 具有子节点的子节点

时间:2014-01-19 19:40:48

标签: c# winforms treeview

我需要从数据库填充treeview看起来像:

父        - 儿童                  - 子孙女

有三张桌子。一个包含'父'数据,第二个包含'子'数据,第三个包含'子子'

现在我为'Parents'和'Childrens'加载了数据:

private void PopulateTreeView()
{
    try
    {
        DataTable dtProjekti = objDB.dbGetTable("SELECT * FROM tblProjekti");
        DataTable dtAktivnosti = objDB.dbGetTable("SELECT * FROM tblAktivnosti");
        DataSet ds = new DataSet();
        ds.Tables.Add(dtProjekti);
        ds.Tables.Add(dtAktivnosti);
        ds.Relations.Add("childrens", dtProjekti.Columns["OznakaProjekta"], dtAktivnosti.Columns["OznakaProjekta"]);

        if (ds.Tables[0].Rows.Count > 0)
        {
            treeProjekti.Nodes.Clear();

            foreach (DataRow masterRow in ds.Tables[0].Rows)
            {
                TreeNode masterNode = new TreeNode(masterRow["OznakaProjekta"].ToString(), 0, 1);
                treeProjekti.Nodes.Add(masterNode);

                foreach (DataRow childRow in masterRow.GetChildRows("childrens"))
                {
                    TreeNode childNode = new TreeNode(childRow["NazivAktivnosti"].ToString());                          
                    masterNode.Nodes.Add(childRow["IdAkt"].ToString(), childRow["NazivAktivnosti"].ToString(), 0, 1);
                }
            }
        }
    }
    catch (Exception ex)
    {
        throw new Exception("Unable to populate treeview" + ex.Message);
    }

}

如何解决加载子女孩的问题?

1 个答案:

答案 0 :(得分:0)

子节点是“childNode”的子节点。在上面的代码中将childNode添加到父级后,您应该只需要使用子子数据的另一个foreach语句。