下載本文檔
版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新疆北屯額河明珠國有資本投資有限公司中層管理人員選聘備考題庫及參考答案詳解1套
- 2025年重慶交通大學誠聘英才80人備考題庫及答案詳解參考
- 2025年渭南市各級體育運動學校教練員專項招聘備考題庫及參考答案詳解1套
- 2025年北京語言大學面向副高級及以上專業(yè)技術職務人員事業(yè)編制公開招聘備考題庫有答案詳解
- 宜賓市科技人才集團有限公司2025年第三批員工公開招聘的備考題庫及1套完整答案詳解
- 2025年荊門屈家?guī)X產(chǎn)業(yè)發(fā)展集團有限公司招聘備考題庫及參考答案詳解一套
- 2025年四川工商學院招聘黨委宣傳部工作人員備考題庫及答案詳解1套
- 2025年關于公開招聘編外臨床護士的備考題庫及參考答案詳解1套
- 2025年中國傳媒大學財務處、信息化處、校醫(yī)院其他專業(yè)技術崗招聘備考題庫及參考答案詳解一套
- 安全證書制度詳解講解
- 2024-2025學年人教版七年級數(shù)學上冊期末達標測試卷(含答案)
- 正常順產(chǎn)護理個案
- DL∕T 1396-2014 水電建設項目文件收集與檔案整 理規(guī)范
- 科技奧運成果推廣
- DL-T5181-2017水電水利工程錨噴支護施工規(guī)范
- 走近核科學技術智慧樹知到期末考試答案2024年
- 牛肉丸項目市場營銷方案
- 三通、大小頭面積計算公式
- 軟件無線電原理與應用(第3版)-習題及答案匯總 第1-9章 虛擬人-軟件無線電的新發(fā)展 認知無線電
- 各部門目標與關鍵業(yè)績指標考核表
- 簡單酒水購銷合同
評論
0/150
提交評論