C# 使用dataset c填充树视图节点#

C# 使用dataset c填充树视图节点#,c#,C#,朋友 我有这个代码来填充表2中的父节点和子节点 第一个父表是Category 儿童桌很贵 OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.Settings.Default.dPath + ";Jet OLEDB:Database Password=azouz(2016)"); OleDbDataAdapter da = new OleDbDa

朋友 我有这个代码来填充表2中的父节点和子节点

第一个父表是Category

儿童桌很贵

OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.Settings.Default.dPath + ";Jet OLEDB:Database Password=azouz(2016)");
OleDbDataAdapter da = new OleDbDataAdapter("Select * from Category", cn);
OleDbDataAdapter daSub = new OleDbDataAdapter("Select * from Expensive", cn);
DataSet ds = new DataSet();
da.Fill(ds, "Category");
daSub.Fill(ds, "Expensive");
ds.Relations.Add("Cat_Expensive", ds.Tables["Category"].Columns["Catid"], ds.Tables["Expensive"].Columns["Catid"]);

foreach (DataRow dr in ds.Tables["Category"].Rows)
{
    TreeNode tn = new TreeNode(dr["Category"].ToString());

    foreach (DataRow drChild in dr.GetChildRows("Expensive"))
    {
        tn.Nodes.Add(drChild["ExpensiveName"].ToString());
        treeView1.Nodes.Add(tn);
    }
    treeView1.Nodes.Add(tn);
}
水资源类别(父节点)=表类别

water month 1     (child node) == table Expensive

water for month 2
煤气门

gas for month 1
gas for mont2
我的问题是: 我的问题是,此代码仅使用表类别中的父节点填充树视图 并且不从表中填充子节点

OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.Settings.Default.dPath + ";Jet OLEDB:Database Password=azouz(2016)");
OleDbDataAdapter da = new OleDbDataAdapter("Select * from Category", cn);
OleDbDataAdapter daSub = new OleDbDataAdapter("Select * from Expensive", cn);
DataSet ds = new DataSet();
da.Fill(ds, "Category");
daSub.Fill(ds, "Expensive");
ds.Relations.Add("Cat_Expensive", ds.Tables["Category"].Columns["Catid"], ds.Tables["Expensive"].Columns["Catid"]);

foreach (DataRow dr in ds.Tables["Category"].Rows)
{
    TreeNode tn = new TreeNode(dr["Category"].ToString());

    foreach (DataRow drChild in dr.GetChildRows("Expensive"))
    {
        tn.Nodes.Add(drChild["ExpensiveName"].ToString());
        treeView1.Nodes.Add(tn);
    }
    treeView1.Nodes.Add(tn);
}

您不是一个为“昂贵”创建新树节点的用户

在第二个foreach中为子节点迭代创建另一个树节点,并将子节点添加到父节点“tn”

如下所示(基于您的代码,未经测试)

一个非常古老但概念上非常简单的示例: