C# 使用子节点填充TreeView-子节点

C# 使用子节点填充TreeView-子节点,c#,winforms,treeview,C#,Winforms,Treeview,我需要从数据库中填充treeview,如下所示: 母公司 -孩子们 -亚儿童 有三张桌子。一个包含“父”数据,第二个包含“子”数据,第三个包含“子”数据 目前,我正在加载“家长”和“孩子”的数据: private void PopulateTreeView() { try { DataTable dtProjekti = objDB.dbGetTable("SELECT * FROM tblProjekti"); DataTable dtAktiv

我需要从数据库中填充treeview,如下所示:

母公司 -孩子们 -亚儿童

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

目前,我正在加载“家长”和“孩子”的数据:

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);
    }

}

如何解决加载子节点的问题?

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

我已经尝试过了,但另一个问题是与第二个和第三个数据库表的关系。它不允许我创建新的数据集,填充第二个和第三个表,并在它们之间建立关系。