问题描述
[winform]生成无限级别的treeview,100分数据表如下:idnamepid1aa02bb13cc14dd25ee26ff3达到如下效果:aa...bb......dd......ee...cc......ff谢谢
解决方案
解决方案二:
up
解决方案三:
将TreeNode的Key设置成记录的ID,然后添加的时候如果检测记录的Pid,如果不为0的话就取Treeview上Key为PID的TreeNode并设置为该TreeNode的子节点。
解决方案四:
http://blog.csdn.net/xietangz/articles/243306.aspx
解决方案五:
搞个无限递归就行啦呀,自己写一下嘛,递归这东西还瞒好玩的了
解决方案六:
只要做个递归就行了嘛,另外,你的这种表结构注定了你生成树的效率是极低的,建议你改进自己的表结构
解决方案七:
///<summary>///初始化树///</summary>///<paramname="dt"></param>privatevoidInitTreeView(DataTabledt){this.tvMetaWord.Nodes.Clear();//清空TreeViewTreeNoderoot=newTreeNode();root.Text="根节点";root.Tag="0";//存放此节点ID和父结点IDroot.Expand();this.tvMetaWord.Nodes.Add(root);this.CreateChildNode(root,dt);}///<summary>///创建子结点///</summary>///<paramname="parent"></param>///<paramname="dt"></param>privatevoidCreateChildNode(TreeNodeparent,DataTabledt){DataRow[]rowlist=dt.Select("ParentID="+parent.Tag.ToString());foreach(DataRowrowinrowlist){//创建一个新的节点了TreeNodenode=newTreeNode();node.Text=row["Lable"].ToString();node.Tag=row["ID"].ToString();node.Expand();parent.Nodes.Add(node);CreateChildNode(node,dt);}}
解决方案八:
hoho用无限递归就没问题,最近刚刚就是用这个方法实现的。foreach(IDomainUseriteminlist){inttreeViewId=Convert.ToInt32(item.TreeViewId);stringbranchName=string.Empty;stringbranchImage=string.Empty;if(item.GetType().Equals(typeof(DomainNameUI))){DomainNameUIdata=(DomainNameUI)item;branchName=data.NameString;branchImage=SetCreateConstants.Image_Url_Domain;}elseif(item.GetType().Equals(typeof(OuUI))){OuUIdata=(OuUI)item;branchName=data.NameString;branchImage=SetCreateConstants.Image_Url_Ou;}else{return;}TreeComponentchild=tree.CreateTreeBranch(treeViewId,branchName,null,branchImage);parent.Add(child);List<IDomainUser>ouList=item.GetOUList();if(ouList!=null&&ouList.Count>0){CreateTreeViewBranch(tree,child,ouList);}}