I have create table in database name"Group" contains ID,Rank,Name like this:
ID RANK NAME
1 A Main
2 A1 Departments
3 A2 Companies
4 A3 Usres
5 I Invoice
6 T Tools
7 T1 ChangPswd
8 T2 ChangLanguage
when I try this query get the same result
如何让'A + T'成为父母而(A1,A2,A3,T1,T2)是儿童节点? (在同一张表中) SELECT Rank,Name, Rank()结束(按Rank排序)作为Rank 来自集团 按ID订购;
//in formLoad
{
DataTable dt;
DBAccess db = new DBAccess();
dt = db.ExcuteDataTable("SELECT Name FROM Group")
foreach (DataRow dr in dt.Rows)
{
parentNode = Tree.Nodes.Add(dr["Name"].ToString());
}
how can i make 'A+T'is parent and (A1,A2,A3,T1,T2) is childnode? (in the same table)
答案 0 :(得分:0)
我认为你可以用硬编码做到这一点,我不同意这一点,而不是你可以添加另一个名为parent的列来识别每个孩子的父母。
但回答你的问题
您可以先创建A,T节点,然后使用SubString
查找其childNodesforeach (DataRow dr in dt.Rows)
{
if(dr["Name"].ToString().Trim() != "A" && dr["Name"].ToString().Trim() != "T")
{
if(dr["Name"].ToString().SubString(1,1) == "A")
{
parentNodeA = Tree.Nodes.Add(dr["Name"].ToString());
}
else if(dr["Name"].ToString().SubString(1,1) == "T")
{
parentNodeT = Tree.Nodes.Add(dr["Name"].ToString());
}
}
}
或者,如果您以A,T为例,您可以拥有更多的父节点,例如I,F,L,您可以识别父母的长度,
Private Sub populateNodes(dt as DataTable)
{
populateParentNodes(dt);
foreach (DataRow dr in dt.Rows)
{
if(dr["Name"].ToString().Trim().Lenght() > 1)
{
Tree.Nodes.FindNodeByName(dr["Name"].ToString().SubString(1,1)).Add(dr["Name"].ToString());
}
}
}
Private Function populateParentNodes(DataTable dt)
{
foreach (DataRow dr in dt.Rows)
{
if(dr["Name"].ToString().Trim().Lenght() == 1)
{
Tree.Nodes.Add(dr["Name"].ToString());
}
}
}
我没有测试代码,因为我在IDE中写了它但我希望它可以帮助你
问候