树视图 如何做到这一点
本文关键字:这一点 何做 视图 | 更新日期: 2023-09-27 18:24:44
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(是子节点?(在同一表中( 选择等级,姓名, Rank(( over (按 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)
我认为
你可以用硬编码来做到这一点,我不同意,取而代之的是,你可以添加另一列名为 parent 来标识每个孩子的父母。
但是回答你的问题
您可以先创建 A,T 节点,然后使用子字符串查找其子节点
foreach (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 中编写的,但我希望它对您有所帮助
问候