DataTable dt=new DataTable();//假如这是一个产品类别,有多层的
dt.columns.add("id",System.type.getType("system.string"));//类的ID
dt.columns.add("pid",System.type.getType("system.string"));//父ID
dt.columns.add("name",System.type.getType("system.string"));//类名称
DataRow dr=dt.NewRow();
dr[0]="1";
dr[1]="";//顶级类就是空字符
dr[2]="冬装";
dt.Rows.add(dr);
dr[0]="2";
dr[1]="";
dr[2]="春装";
dt.Rows.add(dr);
dr[0]="10";
dr[1]="1";
dr[2]="羊毛衫";
dt.Rows.add(dr);
dr[0]="11";
dr[1]="1";
dr[2]="羽绒服";
dt.Rows.add(dr);
dr[0]="12";
dr[1]="2";
dr[2]="T恤";
dt.Rows.add(dr);我现在想把这个产品类的结构用TreeView控件来表现。要用到递归,这个递归怎么写。注:上面的表是我自定义,不是从数据库中读的。
dt.columns.add("id",System.type.getType("system.string"));//类的ID
dt.columns.add("pid",System.type.getType("system.string"));//父ID
dt.columns.add("name",System.type.getType("system.string"));//类名称
DataRow dr=dt.NewRow();
dr[0]="1";
dr[1]="";//顶级类就是空字符
dr[2]="冬装";
dt.Rows.add(dr);
dr[0]="2";
dr[1]="";
dr[2]="春装";
dt.Rows.add(dr);
dr[0]="10";
dr[1]="1";
dr[2]="羊毛衫";
dt.Rows.add(dr);
dr[0]="11";
dr[1]="1";
dr[2]="羽绒服";
dt.Rows.add(dr);
dr[0]="12";
dr[1]="2";
dr[2]="T恤";
dt.Rows.add(dr);我现在想把这个产品类的结构用TreeView控件来表现。要用到递归,这个递归怎么写。注:上面的表是我自定义,不是从数据库中读的。
冬装
羊毛衫
羽绒服
春装
T恤
怎么循环?我不太明白你的意思?能写出来吗?
这种题一般是用递归写法,其实递补算法我是会的,,只是获取里面的列值老是出错。
如果从数据库一个表递归读出我是会的。。呵
dt.Columns.Add("id", typeof(string));//类的ID
dt.Columns.Add("pid", typeof(string));//父ID
dt.Columns.Add("name", typeof(string));//类名称
DataRow dr = dt.NewRow();
dr[0] = "1";
dr[1] = "";//顶级类就是空字符
dr[2] = "冬装";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "2";
dr[1] = "";
dr[2] = "春装";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "10";
dr[1] = "1";
dr[2] = "羊毛衫";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "11";
dr[1] = "1";
dr[2] = "羽绒服";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "12";
dr[1] = "2";
dr[2] = "T恤";
dt.Rows.Add(dr);
this.treeView1.Nodes.Clear();
foreach (DataRow dra in dt.Rows)
{
if (dra[1].ToString() == "")
this.treeView1.Nodes.Add(dra[0].ToString(), dra[2].ToString());
}
foreach (DataRow dra in dt.Rows)
{
if (dra[1].ToString() != "")
{
this.treeView1.Nodes[dra[1].ToString()].Nodes.Add(dra[2].ToString());
}
}
}