问题描述
privatevoidInitTreeView(){for(inti=0;i<GetBigType().Rows.Count;i++){DataTabledt=GetBigType();TreeNodenode=newTreeNode();node.Expanded=false;//设置节点是否展开,取反//lookthiscoderunnode.Text=dt.rows[i]["bigname"].ToString();node.Value=dt.Rows[i]["TradeBigTypeid"].ToString();this.MyTreeView.Nodes.Add(node);}}这是一级绑定到节点里.//一级节点publicDataTableGetBigType(){using(SqlConnectioncon=newSqlConnection(MCommon.ConnectString)){con.Open();stringsql="select*fromTradeBigTypewherestatus=1";SqlCommandcmd=newSqlCommand(sql,con);SqlDataAdapterada=newSqlDataAdapter(cmd);DataTabledt=newDataTable();ada.Fill(dt);returndt;}}//二级节点publicDataTableGetMidType(stringbigname){using(SqlConnectioncon=newSqlConnection(MCommon.ConnectString)){con.Open();stringsql="select*fromtrademidtypewherebigtradeid=(selecttradebigtypeidfromtradebigtypewherebigname='"+bigname+"')";SqlCommandcmd=newSqlCommand(sql,con);SqlDataAdapterada=newSqlDataAdapter(cmd);DataTabledt=newDataTable();ada.Fill(dt);returndt;}}//三级节点publicDataTableGetSmallType(stringbigname,stringmidname){using(SqlConnectioncon=newSqlConnection(MCommon.ConnectString)){con.Open();stringsql="select*fromTradeSmallTypewherebigid=(selecttradebigtypeidfromtradebigtypewherebigname='"+bigname+"')andmidid=(selecttrademidtypeidfromtrademidtypewheremidname='"+midname+"')";SqlCommandcmd=newSqlCommand(sql,con);SqlDataAdapterada=newSqlDataAdapter(cmd);DataTabledt=newDataTable();ada.Fill(dt);returndt;}}这是我用到的得到数据的方法都要传参数的,但是我不知道怎么把他们加到树里面的二级三级里去了各位路过的高手,能不能就这我这几个方法把二级三级绑到树里去,小女子在这里先谢谢各位了
解决方案
解决方案二:
递归
解决方案三:
有没有详细点的代码,谢谢了.
解决方案四:
treeview的绑定通常是用递归的;而且在表结构里对每条记录标记父节点,和子节点的关系,就可以进行tree的N层绑定了
解决方案五:
给你个思路:GetBigType()取到数据后循环,循环体里的处理就是把改条纪录添加到treeview上,针对每一条纪录再取二级GetMidType()的数据,然后再小循环,再取GetSmallType()的数据。。。如果还有4级,5级的话,你就要考虑递归了。还是做不出来可以联系我。chfzhb@163.com
解决方案六:
给你个例子吧:一看就明白了privatevoidCreateDataSource(stringParentid){stringsqlstr="selectdistinctm.id,m.ModuleID,m.modulename,m.menupath,m.parentmoduleid";sqlstr+="frommodelsm,accounts_userrolesur,account_rolepermissionrm";sqlstr+="wherem.showmenu=1";sqlstr+="andm.moduleid=rm.moduleid";sqlstr+="andrm.roleid=ur.roleid";sqlstr+="andur.userid="+this.User.Identity.Name;sqlstr+="andparentmoduleid='"+Parentid+"'";sqlstr+="orderbym.ID";DataSetds=newDataSet();ds=Dbc.getBinding(sqlstr,"s");foreach(DataRowdrinds.Tables[0].Rows){TreeNodenode=newTreeNode();node.Text=dr["modulename"].ToString();node.ID=dr["moduleid"].ToString();node.ImageUrl="../images/sciencesearch.gif";if(dr["menupath"].ToString()!=""){node.NavigateUrl=dr["menupath"].ToString();node.Target="MainFrame";}CreateDataSource(dr["moduleid"].ToString(),refnode);Tv_menu.Nodes.Add(node);}}privatevoidCreateDataSource(stringParentid,refTreeNodePnode){stringsqlstr="selectdistinctm.id,m.ModuleID,m.modulename,m.menupath,m.parentmoduleid";sqlstr+="frommodelsm,accounts_userrolesur,account_rolepermissionrm";sqlstr+="wherem.showmenu=1";sqlstr+="andm.moduleid=rm.moduleid";sqlstr+="andrm.roleid=ur.roleid";sqlstr+="andur.userid="+this.User.Identity.Name;sqlstr+="andparentmoduleid='"+Parentid+"'";sqlstr+="orderbym.ID";DataSetds=newDataSet();ds=Dbc.getBinding(sqlstr,"s");foreach(DataRowdrinds.Tables[0].Rows){TreeNodenode=newTreeNode();node.Text=dr["modulename"].ToString();node.ID=dr["moduleid"].ToString();if(dr["menupath"].ToString()!=""){node.NavigateUrl=dr["menupath"].ToString();node.Target="MainFrame";}CreateDataSource(dr["moduleid"].ToString(),refnode);Pnode.Nodes.Add(node);}}
解决方案七:
搂主要厚道!http://community.csdn.net/Expert/topic/5770/5770820.xml?temp=.5174829
解决方案八:
在添加一级节点时,判断此节点有没有子节点有就查询出来添加到此节点下
解决方案九:
我仿照给你做了个例子,你可以参考usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;publicpartialclass_Default:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){InitTreeView();}privatevoidInitTreeView(){DataTabledt=GetBigType();for(inti=0;i<dt.Rows.Count;i++){TreeNodenode=newTreeNode();node.Expanded=false;//设置节点是否展开,取反//lookthiscoderunnode.Text=dt.Rows[i]["bigname"].ToString();node.Value=dt.Rows[i]["TradeBigTypeid"].ToString();this.MyTreeView.Nodes.Add(node);DataTableminDt=GetMidType(node.Value);for(intj=0;j<minDt.Rows.Count;j++){TreeNodeminNode=newTreeNode();minNode.Text=minDt.Rows[j]["minname"].ToString();minNode.Value=minDt.Rows[j]["MinTypeid"].ToString();node.ChildNodes.Add(minNode);DataTablesmallDt=GetSmallType(node.Value,minNode.Value);for(intk=0;k<smallDt.Rows.Count;k++){TreeNodesamllNode=newTreeNode();samllNode.Text=smallDt.Rows[k]["smallname"].ToString();samllNode.Value=smallDt.Rows[k]["SmallTypeid"].ToString();minNode.ChildNodes.Add(samllNode);}}}}publicstaticDataTableGetBigType(){DataTabledTable=newDataTable();dTable.Columns.Add("bigname",typeof(string));dTable.Columns.Add("TradeBigTypeid",typeof(string));for(inti=0;i<10;i++){DataRowdr=dTable.NewRow();dr["bigname"]="bigname"+i.ToString();dr["TradeBigTypeid"]="TradeBigTypeid"+i.ToString();dTable.Rows.Add(dr);}returndTable;}publicstaticDataTableGetMidType(stringbigname){DataTabledTable=newDataTable();dTable.Columns.Add("minname",typeof(string));dTable.Columns.Add("MinTypeid",typeof(string));for(inti=0;i<10;i++){DataRowdr=dTable.NewRow();dr["minname"]="minname"+i.ToString();dr["MinTypeid"]="MinTypeid"+i.ToString();dTable.Rows.Add(dr);}returndTable;}publicstaticDataTableGetSmallType(stringbigname,stringmidname){DataTabledTable=newDataTable();dTable.Columns.Add("smallname",typeof(string));dTable.Columns.Add("SmallTypeid",typeof(string));for(inti=0;i<10;i++){DataRowdr=dTable.NewRow();dr["smallname"]="smallname"+i.ToString();dr["SmallTypeid"]="SmallTypeid"+i.ToString();dTable.Rows.Add(dr);}returndTable;}}
解决方案十:
谢谢各位了,我在看看.
解决方案十一:
kyouken2007(乘凉)()信誉:100搂主要厚道!http://community.csdn.net/Expert/topic/5770/5770820.xml?temp=.5174829在此也谢谢你帮我解决问题,但是你的意见我用过之后还是不行.由于我的问题没解决,所以就多发了几遍!如有对你有影响,请说明原因!谢鸟!
解决方案十二:
你最好也尊重一下大家的劳动。你问问题,大家帮你解决,就算没解决也可以继续讨论。那个帖子里什么都不说,有出个一样的帖子,你这是对那个帖子里回答你问题人的不尊重。
解决方案十三:
kyouken2007(乘凉)()信誉:100你最好也尊重一下大家的劳动。你问问题,大家帮你解决,就算没解决也可以继续讨论。那个帖子里什么都不说,有出个一样的帖子,你这是对那个帖子里回答你问题人的不尊重。如果有对你的劳动不尊重的话,在此向你道歉!只是我在那边发的帖子没人反映了,所以就换地方发一下.很少用CSDN,所以里面的规矩不清楚,希望有冒犯的地方大家多多见谅!还希望以后大家能互相帮助!谢谢了!
解决方案十四:
呵呵,不管怎样也得谢谢大家呀