问题描述
如何实现TreeView绑定无限级分类,求源码!
解决方案
解决方案二:
嵌套试试以前做DataList的时候,就是嵌套做到绑定父类下面子类的类似树状节点和TreeView原理是一样的
解决方案三:
privatevoidInitTree(TreeNodeCollectionNds,stringparentId){DataViewdv=newDataView();TreeNodetmpNd;stringintId;dv.Table=ds.Tables["tree"];dv.RowFilter="ParentId="+parentId;foreach(DataRowViewdrvindv){tmpNd=newTreeNode();tmpNd.ID=drv["id"].ToString();tmpNd.Text=drv["sortname"].ToString();tmpNd.NavigateUrl="InfoSort.aspx?info_id="+drv["id"].ToString();Nds.Add(tmpNd);intId=drv["ParentId"].ToString();InitTree(tmpNd.Nodes,tmpNd.ID);}}
解决方案四:
递归实现publicvoidBindCategoryTreeVew(TreeViewtreeView,boolisExpanded,stringsSelectedData){SqlConnectionconn=DB.conCreate();SqlDataAdaptersda=newSqlDataAdapter("select*fromProcduct_Type",conn);DataSetds=newDataSet();sda.Fill(ds);//将获取的数据转换为一个DataTableDataTabledt=ds.Tables[0];treeView.Nodes.Clear();//清空树的所有节点//获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow数组DataRow[]rowList=dt.Select("ParentID=0");foreach(DataRowrowinrowList){TreeNoderootNode=newTreeNode();rootNode.Text="<b>"+row["Name"].ToString()+"</b>";rootNode.Value=row["ID"].ToString();rootNode.Expanded=isExpanded;rootNode.Selected=true;rootNode.NavigateUrl="../bigclass.aspx?id="+rootNode.Value.ToString();treeView.Nodes.Add(rootNode);CreateChildNode(rootNode,dt,isExpanded,sSelectedData);}}//创建子节点privatevoidCreateChildNode(TreeNodeparentNode,DataTabledt,boolisExpanded,stringsSelecedData){//选择数据,添加排序表达市DataRow[]rowList=dt.Select("ParentID="+Convert.ToInt32(parentNode.Value));foreach(DataRowrowinrowList){//创建一个新的节点了TreeNodenode=newTreeNode();node.Text=row["Name"].ToString();node.Value=row["ID"].ToString();node.Expanded=isExpanded;//node.SelectAction=TreeNodeSelectAction.None;node.NavigateUrl="../smallclass.aspx?id="+node.Value.ToString();if(node.Value==sSelecedData){node.Selected=true;}parentNode.ChildNodes.Add(node);//递归调用,创建其他节点CreateChildNode(node,dt,isExpanded,sSelecedData);}}
解决方案五:
递归很慢啦.用dataset的relation方法比较好.