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

下載本文檔

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

文檔簡介

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

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

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

在成功下載并設置了之后,就可以開始使用TreeView控件。記?。涸诿總€使用它的程序頁面的開頭都要導入它的命名空間:<%@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é)點,創(chuàng)建靜態(tài)樹

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

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

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

<mytree:treenodetext="firstnode"/>

</mytree:treeview>

</form>

</body>

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

publicvoidPage_Load(objectsender,EventArgse)

{

if(!Page.IsPostBack)

{

TreeNodesnode=newTreeNode();

snode.Text="secondnode";

treeview1.Nodes.Add(snode);

}

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

說明當生成樹狀控件時會自動從numtree.xml中讀取樹的節(jié)點內(nèi)容,numtree.xml文件如下:<?XMLversion="1.0"encoding="utf-8"?><treenodes><treenodetext="firstnode"/><treenodetext="secondnode"/></treenodes>生成的樹狀結(jié)果同上面的例子相同四、方便快捷地創(chuàng)建動態(tài)樹以上方法產(chǎn)生的樹都是靜態(tài)的,即使是從XML中導入,它的節(jié)點數(shù)目也是一定的。當我們要將數(shù)據(jù)庫中的數(shù)據(jù)用樹狀結(jié)構(gòu)表現(xiàn)出來時,并不知道這個樹的層次和節(jié)點數(shù),就需要在TreeView控件中動態(tài)地添加樹節(jié)點。例如用樹狀結(jié)構(gòu)表現(xiàn)一個公司有許多部門,部門下有員工。部門的數(shù)據(jù)放在表dept中(包含字段deptid和deptname),部門和員工的對應關系放在表deptperson中(包含字段deptid、personid和personname),并且這些字段都是string類型,這兩個表放在數(shù)據(jù)庫mydb.mdb中。這里添加節(jié)點的方法也有幾種,在此介紹的方法是在頁面加載時生成部門節(jié)點,當點擊部門前的擴展圖標按鈕后再生成部門下的人員子節(jié)點。在頁面中寫入:<mytree:treeviewid="tr1"runat="serve"onexpand="treeview1_Expand"/>在<scriptLanguage="c#"runat="server"></script>中加入如下代碼:OleDbConnectionmyconn;publicvoidPage_Load(Objectsender,EventArgse)//在頁面加載時生成部門節(jié)點{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();}}點擊擴展圖標按鈕觸發(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)建比這更為復雜的樹結(jié)構(gòu)。TreeView控件還有許多其他的屬性和事件,象ChildType,SelectedStyle,imageurl和onselectedindexchang

溫馨提示

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

最新文檔

評論

0/150

提交評論