问题描述
PKIdParentIdDescrpitionIsLeaf11BooksFalse8301AnthropologyTrue8311ArtTrue8321BiographyTrue8331BusinessTrue8341ComputersTrue8351CookbooksTrue8361EssaysTrue这个表是原始表就1根,其他是叶子节点。根是指向自己的,用以bool标示是否还有叶子节点PKIdParentIdDescrpitionIsLeaf11BooksFalse8301AnthropologyTrue8311ArtFalse900831ChinaArtTrue9001831ForginArtTrue8321BiographyTrue8331BusinessTrue8341ComputersTrue8351CookbooksTrue8361EssaysTrue第二个表是该了下结构,将Art类别,也设置成一个根,下边添了两个子节点第一个表的递归写出来了。datasetds;if(!IsPostBack){Bind();//已经将数据库数据绑定到了datasetds;BindToTree(1,(TreeNode)null,false);//调用}privatevoidBindToTree(intParentID,TreeNodepNode,boolIsLeaf){TreeNodetn1=newTreeNode();DataViewdvTree=newDataView(ds.Tables[0]);//过滤ParentIDdvTree.RowFilter=string.Format("[ISLEAF]={0}and[PARENTID]={1}",IsLeaf,ParentID);foreach(DataRowViewRowindvTree){if(pNode==null){tn1.Text=Row["Description"].ToString();tn1.Value=Row["PKId"].ToString();tn1.NavigateUrl="#";TreeView1.Nodes.Add(tn1);tn1.Expanded=true;BindToTree(Int32.Parse(Row["PKId"].ToString()),tn1,true);}else{TreeNodetn2=newTreeNode();tn2.Text=Row["Description"].ToString();tn2.Value=Row["PKId"].ToString();tn2.NavigateUrl="#";pNode.ChildNodes.Add(tn2);tn2.Expanded=true;BindToTree(Int32.Parse(Row["PKId"].ToString()),tn2,true);}}}这个方法对两层树还管用,如果对于多层树就不行了。我不知道怎么改??
解决方案
解决方案二:
BindToTree递归调用思路没问题实际调试看看吧
解决方案三:
为什么要用2张表来实现呢,一张表完全可以实现多层次的,不过库结构和你的不一样,要改的话库结构就要变了