有一段数据如下想建一棵树
172,173,405,415
172,173,405,416
172,172,405,417
179,208,209,2010
179,208,209,2011
....想做出这样的效果:
|-172
| |-173
| |-405
| |-415
| |-416
| |-417
|
|
|-179
| |-206
| |-207
| |-208
| |-209
| |-2011
172,173,405,415
172,173,405,416
172,172,405,417
179,208,209,2010
179,208,209,2011
....想做出这样的效果:
|-172
| |-173
| |-405
| |-415
| |-416
| |-417
|
|
|-179
| |-206
| |-207
| |-208
| |-209
| |-2011
DataTable DataC = new DataTable();
public void CreateNodesOfParent(int iParent,TreeNode pNode)
{
DataView dvwData = new DataView(DataC);
dvwData.RowFilter = "[UpperID] = " + iParent;
TreeView1.AutoSelect = false;
foreach(DataRowView Row in dvwData)
{
if(pNode == null)
{
TreeNode zNode= new TreeNode();
zNode.Text=Row["Name"].ToString();
zNode.ID =Row["ID"].ToString();
zNode.NavigateUrl ="CategoryList.aspx?parent_id="+Row["ID"].ToString()+
"&parent_name="+Row["Name"].ToString();
zNode.Target ="right";
zNode.ImageUrl="../images/folder.gif";
zNode.Expanded=true;
TreeView1.Nodes.Add (zNode);
CreateNodesOfParent(Int32.Parse(Row["ID"].ToString()),zNode);
}
else
{
TreeNode zNode= new TreeNode();
zNode.Text=Row["Name"].ToString ();
zNode.ID =Row["ID"].ToString ();
zNode.NavigateUrl ="CategoryList.aspx?parent_id="+Row["ID"].ToString()+
"&parent_name="+Row["Name"].ToString();
zNode.Target ="right";
zNode.ImageUrl="../images/folder.gif";
pNode.Nodes.Add(zNode);
CreateNodesOfParent(Int32.Parse(Row["ID"].ToString()),zNode);
}
}
}
CreateNodesOfParent(0,(TreeNode)null);
在SQL里面处理会好的多。。
如果楼主确定只有这四级目录的话,用程序写还可以。。多了。就太麻烦了。。
string strs;
string[] str=new string[4];
TreeNode tn;
TreeNode tn1;
TreeNode tn2;
TreeNode tn3;
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
using(SqlConnection conn=new SqlConnection("server=.;database=master;uid=sa;pwd=sa"))
{
SqlDataAdapter da=new SqlDataAdapter("select a from p order by a",conn);
DataSet ds=new DataSet();
da.Fill(ds);
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
strs=ds.Tables[0].Rows[i]["a"].ToString();
str=strs.Split(",".ToCharArray());
if(ViewState["str0"]==null||ViewState["str0"].ToString()!=str[0])
{
ViewState["str0"]=str[0];
tn=new TreeNode();
tn.Text=str[0];
tn.Target=str[0];
TreeView1.Nodes.Add(tn);
if(ViewState["str1"]==null||ViewState["str1"].ToString()!=str[1])
{
ViewState["str1"]=str[1];
tn1=new TreeNode();
tn1.Text=str[1];
tn1.Target=str[1];
tn.Nodes.Add(tn1);
if(ViewState["str2"]==null||ViewState["str2"].ToString()!=str[2])
{
ViewState["str2"]=str[2];
tn2=new TreeNode();
tn2.Text=str[2];
tn2.Target=str[2];
tn1.Nodes.Add(tn2);
if(ViewState["str3"]==null||ViewState["str3"].ToString()!=str[3])
{
ViewState["str3"]=str[3];
tn3=new TreeNode();
tn3.Text=str[3];
tn3.Target=str[3];
tn2.Nodes.Add(tn3);
}
}
}
else
{
if(ViewState["str2"]==null||ViewState["str2"].ToString()!=str[2])
{
ViewState["str2"]=str[2];
tn2=new TreeNode();
tn2.Text=str[2];
tn2.Target=str[2];
tn1.Nodes.Add(tn2);
if(ViewState["str3"]==null||ViewState["str3"].ToString()!=str[3])
{
ViewState["str3"]=str[3];
tn3=new TreeNode();
tn3.Text=str[3];
tn3.Target=str[3];
tn2.Nodes.Add(tn3);
}
}
else
{
if(ViewState["str3"]==null||ViewState["str3"].ToString()!=str[3])
{
ViewState["str3"]=str[3];
tn3=new TreeNode();
tn3.Text=str[3];
tn3.Target=str[3];
tn2.Nodes.Add(tn3);
}
}
}
}
else
{
if(ViewState["str1"]==null||ViewState["str1"].ToString()!=str[1])
{
ViewState["str1"]=str[1];
tn1=new TreeNode();
tn1.Text=str[1];
tn1.Target=str[1];
tn.Nodes.Add(tn1);
if(ViewState["str2"]==null||ViewState["str2"].ToString()!=str[2])
{
ViewState["str2"]=str[2];
tn2=new TreeNode();
tn2.Text=str[2];
tn2.Target=str[2];
tn1.Nodes.Add(tn2);
if(ViewState["str3"]==null||ViewState["str3"].ToString()!=str[3])
{
ViewState["str3"]=str[3];
tn3=new TreeNode();
tn3.Text=str[3];
tn3.Target=str[3];
tn2.Nodes.Add(tn3);
}
}
}
else
{
if(ViewState["str2"]==null||ViewState["str2"].ToString()!=str[2])
{
ViewState["str2"]=str[2];
tn2=new TreeNode();
tn2.Text=str[2];
tn2.Target=str[2];
tn1.Nodes.Add(tn2);
if(ViewState["str3"]==null||ViewState["str3"].ToString()!=str[3])
{
ViewState["str3"]=str[3];
tn3=new TreeNode();
tn3.Text=str[3];
tn3.Target=str[3];
tn2.Nodes.Add(tn3);
}
}
else
{
if(ViewState["str3"]==null||ViewState["str3"].ToString()!=str[3])
{
ViewState["str3"]=str[3];
tn3=new TreeNode();
tn3.Text=str[3];
tn3.Target=str[3];
tn2.Nodes.Add(tn3);
}
}
}
}
}
}
}
}
user master
go
create table p(a varchar(100))
insert into p select '172,173,405,415'
insert into p select '179,206,207,209'
insert into p select '179,206,207,2011'
insert into p select '172,173,405,416'
insert into p select '172,173,405,417'
insert into p select '179,206,207,208'
go
好在层数固定。。要不然就的在sql上下功夫了