我在做一個(gè)文章管理系統的時(shí)候,想實(shí)現文章類(lèi)無(wú)限分級,為方便呈現,就決定采用TreeView控件,所以需要將TreeView控件將數據庫結合起來(lái),動(dòng)態(tài)讀入節點(diǎn),這一步我參照署名為gbvnis高手寫(xiě)的一段vb.net的程序修改成c#版,很快實(shí)現,他采用一個(gè)第歸的方法,逐步讀出每個(gè)節點(diǎn),下面是我c#的初始化樹(shù)程序
ivate void intiTree(TreeNodeCollection Nds,int parentId)
{
DataSet ds=new DataSet();
ds=eharbor.DataAccess.dataSet(sql0);//我有一個(gè)單獨的數據訪(fǎng)問(wèn)類(lèi)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);
}
}
方便的實(shí)現了讀入樹(shù),但實(shí)現返回節點(diǎn)值卻費了我好大功夫,去網(wǎng)上搜相關(guān)內容,也沒(méi)找到,但最后還是讓我給蒙出來(lái)了,原來(lái)TreeView的SelectedNodeIndex返回的根節點(diǎn)值是0,1,2這樣的,但子節點(diǎn)是0.1,0.0.1,這樣的,這樣怎么能采用TreeView.Nodes[SelectedNodeIndex].Text返回呢?我束手無(wú)策。去論壇發(fā)帖求助也沒(méi)能解決,傍晚的時(shí)候,我突然想到是不是這樣,子節點(diǎn)TreeVIew.Nodes[i].Nodes[i]......,一試果然,我高興又無(wú)奈,就這樣一個(gè)小而簡(jiǎn)單的問(wèn)題費了我一整天功夫,下面是我用循環(huán)的方法返回節點(diǎn)值的程序
private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
string[] aa=e.NewNode.Split(‘.‘);
int[] incount=new int[20];// 分類(lèi)不能超過(guò)20級,這里算是個(gè)缺陷吧,要么就要再循環(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;
聯(lián)系客服