在ASP.NET中開發(fā)樹狀結(jié)構(gòu)_第1頁(yè)
在ASP.NET中開發(fā)樹狀結(jié)構(gòu)_第2頁(yè)
在ASP.NET中開發(fā)樹狀結(jié)構(gòu)_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余3頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

在ASP.NET中開發(fā)樹狀結(jié)構(gòu)

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

在你的Web程序使用TreeView控件之前,首先必須下載InternetExplorerWebBrowercontrols到你的開發(fā)機(jī)器上,然后導(dǎo)入命名空間??稍L問以下網(wǎng)址下載:/ControlGallery/default.aspx?Category=38&tabindex=2下載后,再根據(jù)它的幫助文檔進(jìn)行一些必要的設(shè)置。

在成功下載并設(shè)置了之后,就可以開始使用TreeView控件。記?。涸诿總€(gè)使用它的程序頁(yè)面的開頭都要導(dǎo)入它的命名空間:<%@Importnamespace="Microsoft.Web.UI.WebControls"%><%@RegisterTagPrefix="mytree"NameSpace="Microsoft.Web.UI.WebContro-ls"Assembly="Microsoft.Web.UI..WebControls,Version=26,Culture=neu-tral,PublicKeyToken=31bf3856ad364e35"%>三、三種方式添加節(jié)點(diǎn),創(chuàng)建靜態(tài)樹

開發(fā)樹狀結(jié)構(gòu)要定義一個(gè)TreeView控件,并向其中添加所需的Treenode節(jié)點(diǎn)。向TreeView控件中添加節(jié)點(diǎn)的方法有三種:1、

在頁(yè)面中創(chuàng)建:所有的WebControls都要放在form中,Treeview當(dāng)然也不例外:<body><formrunat="server">

<mytree:treeviewid="treeview1"runat="server">

<mytree:treenodetext="firstnode"/>

</mytree:treeview>

</form>

</body>

以上的語(yǔ)句創(chuàng)建了具有一個(gè)節(jié)點(diǎn)firstnode、名為treeview1的樹。2、在程序代碼中創(chuàng)建:

publicvoidPage_Load(objectsender,EventArgse)

{

if(!Page.IsPostBack)

{

TreeNodesnode=newTreeNode();

snode.Text="secondnode";

treeview1.Nodes.Add(snode);

}

}這樣就為上例的treeview1又創(chuàng)建一個(gè)節(jié)點(diǎn)secondnode,Add方法是在樹的最后添加節(jié)點(diǎn)。生成的結(jié)構(gòu)3、從XML中導(dǎo)入:在TreeView控件中設(shè)定treenodesrc屬性的值為numtree.xml:<mytree:treeviewid="treeview1"runat="server"treenodesrc="numtree.xml"/>

說明當(dāng)生成樹狀控件時(shí)會(huì)自動(dòng)從numtree.xml中讀取樹的節(jié)點(diǎn)內(nèi)容,numtree.xml文件如下:<?XMLversion="1.0"encoding="utf-8"?><treenodes><treenodetext="firstnode"/><treenodetext="secondnode"/></treenodes>生成的樹狀結(jié)果同上面的例子相同四、方便快捷地創(chuàng)建動(dòng)態(tài)樹以上方法產(chǎn)生的樹都是靜態(tài)的,即使是從XML中導(dǎo)入,它的節(jié)點(diǎn)數(shù)目也是一定的。當(dāng)我們要將數(shù)據(jù)庫(kù)中的數(shù)據(jù)用樹狀結(jié)構(gòu)表現(xiàn)出來(lái)時(shí),并不知道這個(gè)樹的層次和節(jié)點(diǎn)數(shù),就需要在TreeView控件中動(dòng)態(tài)地添加樹節(jié)點(diǎn)。例如用樹狀結(jié)構(gòu)表現(xiàn)一個(gè)公司有許多部門,部門下有員工。部門的數(shù)據(jù)放在表dept中(包含字段deptid和deptname),部門和員工的對(duì)應(yīng)關(guān)系放在表deptperson中(包含字段deptid、personid和personname),并且這些字段都是string類型,這兩個(gè)表放在數(shù)據(jù)庫(kù)mydb.mdb中。這里添加節(jié)點(diǎn)的方法也有幾種,在此介紹的方法是在頁(yè)面加載時(shí)生成部門節(jié)點(diǎn),當(dāng)點(diǎn)擊部門前的擴(kuò)展圖標(biāo)按鈕后再生成部門下的人員子節(jié)點(diǎn)。在頁(yè)面中寫入:<mytree:treeviewid="tr1"runat="serve"onexpand="treeview1_Expand"/>在<scriptLanguage="c#"runat="server"></script>中加入如下代碼:OleDbConnectionmyconn;publicvoidPage_Load(Objectsender,EventArgse)//在頁(yè)面加載時(shí)生成部門節(jié)點(diǎn){stringstrmyconn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Serve-r.MapPath(".")+"..\\DataBase\\mydb.mdb";myconn=newOleDbConnection(strmyconn);myconn.Open();if(!Page.IsPostBack){stringstrdept="select*fromdept";OleDbCommandmycomm=newOleDbCommand(strdept,myconn)OleDbDataReadermydr=mycomm.ExecuteReader();//用DataReader讀取部門表中的數(shù)據(jù)while(mydr.Read()){TreeNodetmpnode=newTreeNode();tmpnode.Text=mydr["deptname"].ToString();tmpnode.NodeData=mydr["deptid"].ToString();tmpnode.Expandable=ExpandableValue.CheckOnce;treeview1.Nodes.Add(tmpnode);}mydr.Close();}}點(diǎn)擊擴(kuò)展圖標(biāo)按鈕觸發(fā)的事件treeview1_Expand的代碼是:publicvoidtreeview1_Expand(objectsender,Microsoft.Web.UI.WebControls.Tr-eeViewClickEventArgse){TreeNodedeptnode=((Microsoft.Web.UI.WebControls.TreeView)sender).Nodes[(int.Par-se(e.Node))];if(deptnode.Nodes.Count==0){stringstrperson="selectdeptperson.personnamefromdeptperson,deptwhe-redept.deptid=deptperson.deptidanddept.deptid='"+deptnode.NodeData.T-oString()+"'";OleDbCommandmycomm1=newOleDbCommand(strperson,myconn);OleDbDataReadermydr1=mycomm1.ExecuteReader();while(mydr1.Read()){TreeNodepersonnode=newTreeNode();personnode.Text=mydr1["personname"].ToString();deptnode.Nodes.Add(personnode);}mydr1.Close();}}使用同樣的方法和原理,我們可以創(chuàng)建比這更為復(fù)雜的樹結(jié)構(gòu)。TreeView控件還有許多其他的屬性和事件,象ChildType,SelectedStyle,imageurl和onselectedindexchang

溫馨提示

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

評(píng)論

0/150

提交評(píng)論