在ASPNET中開(kāi)發(fā)樹(shù)狀結(jié)構(gòu)_第1頁(yè)
在ASPNET中開(kāi)發(fā)樹(shù)狀結(jié)構(gòu)_第2頁(yè)
在ASPNET中開(kāi)發(fā)樹(shù)狀結(jié)構(gòu)_第3頁(yè)
在ASPNET中開(kāi)發(fā)樹(shù)狀結(jié)構(gòu)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、在ASP.NET中開(kāi)發(fā)樹(shù)狀結(jié)構(gòu)摘要:在網(wǎng)頁(yè)中用樹(shù)狀結(jié)構(gòu)顯示數(shù)據(jù)既清晰又簡(jiǎn)單,用戶(hù)非常需要。本文從實(shí)際應(yīng)用的角度,介紹了在ASP.NET中使用TreeView控件來(lái)創(chuàng)建樹(shù)狀結(jié)構(gòu)的幾種具體方法,可以方便地建立靜、動(dòng)態(tài)樹(shù)狀結(jié)構(gòu),較好地解決了樹(shù)狀結(jié)構(gòu)在生成無(wú)限層次不定數(shù)量節(jié)點(diǎn)時(shí)非常困難而且容易出錯(cuò)的問(wèn)題。關(guān)鍵字:Treeview控件、命名空間、靜態(tài)樹(shù)、動(dòng)態(tài)樹(shù)一、引言在網(wǎng)頁(yè)開(kāi)發(fā)工具ASP.NET的應(yīng)用中,用戶(hù)經(jīng)常希望用樹(shù)狀控件來(lái)顯示分類(lèi)或?qū)哟螖?shù)據(jù),這樣既簡(jiǎn)單又直觀,但是ASP.NET本身沒(méi)有提供此控件。當(dāng)然程序員可以用ImageButton和Label等組成的用戶(hù)控件和XML、XSL語(yǔ)言自己進(jìn)行編寫(xiě),它

2、們可以顯示有限層次少量節(jié)點(diǎn)的樹(shù)狀,但要生成無(wú)限層次不定數(shù)量的節(jié)點(diǎn)時(shí)就難以實(shí)現(xiàn)并且非常容易出錯(cuò)。作者通過(guò)對(duì)Microsoft下TreeView控件大量的實(shí)際應(yīng)用,可以非常方便地實(shí)現(xiàn)任何類(lèi)型的樹(shù)狀結(jié)構(gòu),較好地解決了上述問(wèn)題。二、安裝 TreeView控件、導(dǎo)入命名空間 在你的Web程序使用TreeView控件之前,首先必須下載Internet Explorer WebBrower controls到你的開(kāi)發(fā)機(jī)器上,然后導(dǎo)入命名空間??稍L(fǎng)問(wèn)以下網(wǎng)址下載:下載后,再根據(jù)它的幫助文檔進(jìn)行一些必要的設(shè)置。 在成功下載并設(shè)置了之后,就可以開(kāi)始使用TreeView控件。記?。涸诿總€(gè)使用它的程序頁(yè)面的開(kāi)頭都要導(dǎo)

3、入它的命名空間: 三、三種方式添加節(jié)點(diǎn),創(chuàng)建靜態(tài)樹(shù) 開(kāi)發(fā)樹(shù)狀結(jié)構(gòu)要定義一個(gè)TreeView控件,并向其中添加所需的Treenode節(jié)點(diǎn)。向TreeView控件中添加節(jié)點(diǎn)的方法有三種:1、 在頁(yè)面中創(chuàng)建:所有的WebControls都要放在form中,Treeview當(dāng)然也不例外: 以上的語(yǔ)句創(chuàng)建了具有一個(gè)節(jié)點(diǎn)first node、名為treeview1的樹(shù)。 2、在程序代碼中創(chuàng)建: public void Page_Load(object sender,EventArgs e) if(!Page.IsPostBack) TreeNode snode=new TreeNode(); snode.

4、Text=second node; treeview1.Nodes.Add(snode); 這樣就為上例的treeview1又創(chuàng)建一個(gè)節(jié)點(diǎn)second node,Add方法是在樹(shù)的最后添加節(jié)點(diǎn)。生成的結(jié)構(gòu)3、從XML中導(dǎo)入:在TreeView控件中設(shè)定treenodesrc屬性的值為numtree.xml: 說(shuō)明當(dāng)生成樹(shù)狀控件時(shí)會(huì)自動(dòng)從numtree.xml中讀取樹(shù)的節(jié)點(diǎn)內(nèi)容,numtree.xml文件如下:生成的樹(shù)狀結(jié)果同上面的例子相同四、方便快捷地創(chuàng)建動(dòng)態(tài)樹(shù)以上方法產(chǎn)生的樹(shù)都是靜態(tài)的,即使是從XML中導(dǎo)入,它的節(jié)點(diǎn)數(shù)目也是一定的。當(dāng)我們要將數(shù)據(jù)庫(kù)中的數(shù)據(jù)用樹(shù)狀結(jié)構(gòu)表現(xiàn)出來(lái)時(shí),并不知道這個(gè)樹(shù)

5、的層次和節(jié)點(diǎn)數(shù),就需要在TreeView控件中動(dòng)態(tài)地添加樹(shù)節(jié)點(diǎn)。例如用樹(shù)狀結(jié)構(gòu)表現(xiàn)一公司有許多部門(mén),部門(mén)下有員工。部門(mén)的數(shù)據(jù)放在表dept中(包含字段deptid和deptname),部門(mén)和員工的對(duì)應(yīng)關(guān)系放在表deptperson中(包含字段deptid、personid和personname),并且這些字段都是string類(lèi)型,這兩個(gè)表放在數(shù)據(jù)庫(kù)mydb.mdb中。這里添加節(jié)點(diǎn)的方法也有幾種,在此介紹的方法是在頁(yè)面加載時(shí)生成部門(mén)節(jié)點(diǎn),當(dāng)點(diǎn)擊部門(mén)前的擴(kuò)展圖標(biāo)按鈕后再生成部門(mén)下的人員子節(jié)點(diǎn)。在頁(yè)面中寫(xiě)入:在中加入如下代碼:OleDbConnection myconn;public void Pa

6、ge_Load(Object sender,EventArgs e)/ 在頁(yè)面加載時(shí)生成部門(mén)節(jié)點(diǎn)string strmyconn=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=+Serve-r.MapPath(.)+.DataBasemydb.mdb;myconn=new OleDbConnection(strmyconn);myconn.Open();if(!Page.IsPostBack)string strdept=select * from dept;OleDbCommand mycomm=new OleDbCommand(strdept,m

7、yconn)OleDbDataReader mydr=mycomm.ExecuteReader();/用DataReader讀取部門(mén)表中的數(shù)據(jù)while(mydr.Read()TreeNode tmpnode=new TreeNode();tmpnode.Text=mydrdeptname.ToString();tmpnode.NodeData=mydrdeptid.ToString();tmpnode.Expandable=ExpandableValue.CheckOnce;treeview1.Nodes.Add(tmpnode);mydr.Close();點(diǎn)擊擴(kuò)展圖標(biāo)按鈕觸發(fā)的事件tree

8、view1_Expand的代碼是:public void treeview1_Expand(object sender,Microsoft.Web.UI.WebControls.Tr-eeViewClickEventArgs e)TreeNode deptnode=(Microsoft.Web.UI.WebControls.TreeView)sender).Nodes(int.Par-se(e.Node);if(deptnode.Nodes.Count=0)string strperson=select deptperson.personname from deptperson,dept wh

9、e-re dept.deptid=deptperson.deptid and dept.deptid=+deptnode.NodeData.T-oString()+;OleDbCommand mycomm1=new OleDbCommand(strperson,myconn);OleDbDataReader mydr1=mycomm1.ExecuteReader();while(mydr1.Read()TreeNode personnode=new TreeNode();personnode.Text=mydr1personname.ToString();deptnode.Nodes.Add(

10、personnode);mydr1.Close(); 使用同樣的方法和原理,我們可以創(chuàng)建比這更為復(fù)雜的樹(shù)結(jié)構(gòu)。TreeView控件還有許多其他的屬性和事件,象ChildType,SelectedStyle,imageurl和onselectedindexchang等,利用這些屬性不但可以美化樹(shù)狀結(jié)構(gòu)的外觀,而且還可以更好的滿(mǎn)足你的使用要求。五、結(jié)論:在上面的使用中,我們可以看出TreeView控件在生成樹(shù)狀結(jié)構(gòu)方面具有強(qiáng)大功能,與其他編寫(xiě)自定義用戶(hù)控件和利用XML的方法相比較,它提供的用可擴(kuò)展的樹(shù)狀結(jié)構(gòu)來(lái)顯示層次數(shù)據(jù)方法更加方便、實(shí)用和有效,而且出錯(cuò)率非常低。隨著對(duì)TreeView控件深入的研究,我們也會(huì)不斷地發(fā)現(xiàn)它的更多的有用的方法和功能。BR參考文獻(xiàn)1運(yùn)用XMLXSL進(jìn)行高級(jí)用戶(hù)接口設(shè)計(jì)(1)目錄樹(shù)設(shè)計(jì) 2002.22James Avery. Developing with the Treeview Web Control. 2002.43About The Treeview WebContr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論