我在做一個文章管理系統(tǒng)的時候,想實現文章類無限分級,為方便呈現,就決定采用TreeView控件,所以需要將TreeView控件將數據庫結合起來,動態(tài)讀入節(jié)點,這一步我參照署名為gbvnis高手寫的一段vb.net的程序修改成c#版,很快實現,他采用一個第歸的方法,逐步讀出每個節(jié)點,下面是我c#的初始化樹程序 ivate void intiTree(TreeNodeCollection Nds,int parentId) { DataSet ds=new DataSet(); ds=eharbor.DataAccess.dataSet(sql0);//我有一個單獨的數據訪問類eharbor.DataAccess, DataView dv=new DataView(); TreeNode tmpNd; int intId; dv.Table=ds.Tables[0]; dv.RowFilter="atc_sup_id="+parentId+"";break; foreach(DataRowView drv in dv) { tmpNd=new TreeNode(); tmpNd.ID=drv["atc_id"].ToString(); tmpNd.Text=drv["atc_name"].ToString(); tmpNd.ImageUrl="adimg/filder.gif"; intId=Convert.ToInt32(tmpNd.ID); Nds.Add(tmpNd); intiTree(Nds[Nds.Count-1].Nodes,intId); } } 方便的實現了讀入樹,但實現返回節(jié)點值卻費了我好大功夫,去網上搜相關內容,也沒找到,但最后還是讓我給蒙出來了,原來TreeView的SelectedNodeIndex返回的根節(jié)點值是0,1,2這樣的,但子節(jié)點是0.1,0.0.1,這樣的,這樣怎么能采用TreeView.Nodes[SelectedNodeIndex].Text返回呢?我束手無策。去論壇發(fā)帖求助也沒能解決,傍晚的時候,我突然想到是不是這樣,子節(jié)點TreeVIew.Nodes[i].Nodes[i]......,一試果然,我高興又無奈,就這樣一個小而簡單的問題費了我一整天功夫,下面是我用循環(huán)的方法返回節(jié)點值的程序 private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e) { string[] aa=e.NewNode.Split(‘.‘); int[] incount=new int[20];// 分類不能超過20級,這里算是個缺陷吧,要么就要再循環(huán)一遍重新計一次數。 int i=0; TreeNode temp=new TreeNode();; foreach(string s in aa) { incount[i]=Convert.ToInt32(s); i++; } temp=this.TreeView1.Nodes[incount[0]]; for(int j=1;j<i;j++) { temp=temp.Nodes[incount[j]]; } this.tx_a.Text=temp.Text;
|