朋友 我有这个代码来填充2表
中的父节点和子节点第一个父表是类别
子表是昂贵的
Water_Category(父节点)==表类别
water month 1 (child node) == table Expensive
water for month 2
Gas Gategory
gas for month 1
gas for mont2
我的问题是什么: 我的问题此代码只从表类别填充父节点的树视图 而不是从表Expensive中填充子节点
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);
}
答案 0 :(得分:1)
您没有为“昂贵”创建新的树节点。
您在第二个foreach中为子迭代创建另一个treenode,并将子节点添加到父节点“tn”
如下所示(根据您的代码,未经测试)。
foreach (DataRow dr in ds.Tables["Category"].Rows)
{
TreeNode tn = new TreeNode(dr["Category"].ToString());
foreach (DataRow drChild in dr.GetChildRows("Expensive"))
{
//Create a child tree node here
TreeNode tnChild = new TreeNode(drChild["Expensive"].ToString());
tn.Nodes.Add(tnChild );
}
}
一个非常古老但概念上非常简单的例子:
https://msdn.microsoft.com/en-us/library/aa287575(v=vs.71).aspx