數(shù)據(jù)庫中樹形圖的用法_第1頁
數(shù)據(jù)庫中樹形圖的用法_第2頁
數(shù)據(jù)庫中樹形圖的用法_第3頁
數(shù)據(jù)庫中樹形圖的用法_第4頁
數(shù)據(jù)庫中樹形圖的用法_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——數(shù)據(jù)庫中樹形圖的用法的用法如下:

樹形圖用于顯示依照樹形結(jié)構(gòu)進行組織的數(shù)據(jù),其用途比較廣泛,如計算機中的文件系統(tǒng)(Windows中的資源管理器)、企業(yè)或公司的組成結(jié)構(gòu)等。我們知道在Windows下VB、PB、Delphi等工具提供了一個功能很強的樹型控件TreeView,利用Treeview控件可以便利地開發(fā)樹形圖。然而在網(wǎng)頁上實現(xiàn)樹形圖就不那么簡單了,現(xiàn)在在中利用微軟提供的InternetExplorerWebControls它使得網(wǎng)頁上的樹形圖開發(fā)與在Windows下一樣的便利,一樣的功能強大,甚至更靈活。

本文介紹用InternetExplorerWebControls開發(fā)樹形圖的方法,由于樹形圖結(jié)構(gòu)較繁雜,使用起來常不知如何下手。筆者結(jié)合最近剛為公司用ASP.NET編寫的應(yīng)用程序管理器這一具體實例,詳細(xì)闡述在ASP.NET下如何將InternetExplorerWebControls的使用與數(shù)據(jù)庫聯(lián)系起來,實現(xiàn)數(shù)據(jù)分任意多層顯示,便利地進行增加、修改、刪除、移動操作。筆者希望通過對該實例的闡述,達(dá)到拋磚引玉的效果,與各位同仁相互交流,共同進步。

InternetExplorerWebControls不在VS.NET的標(biāo)準(zhǔn)ServerControl中,要到微軟的站點上下載,下載地址是:

/downloads/samples/internet/default.aspurl=/Downloads/samples/Internet/ASP_DOT_NET_ServerControls/WebControls/default.asp

下載安裝后第一次使用時,要右擊工具箱CustomizeToolbox.NETFrameworkComponents中找到Micosoft.Web.UI.WebControls.Treeview后選中,這樣Treeview控件就出現(xiàn)在工具箱中了。

一、樹的建立

具體方法是:創(chuàng)立一個數(shù)據(jù)庫,設(shè)計樹圖信息表TREE_INFO,包含NODEID、PARENTID、NODENAME、ADDErss、ICON字段,其它字段根據(jù)實際業(yè)務(wù)而定,節(jié)點名稱NODENAME將在樹型控件的節(jié)點上顯示,NODEID字段保存節(jié)點的唯一標(biāo)識號,PARENTID表示當(dāng)前節(jié)點的父節(jié)點號,標(biāo)識號組成了一個鏈表,記錄了樹上節(jié)點的結(jié)構(gòu)。設(shè)計一個Web窗體其上放置TreeView控件。

PRivateSubCreateDataSet()建立數(shù)據(jù)集

DimmyConnAsNewSqlConnection()

DimmyCmdAsNewSqlCommand(selectNODEID,NODENAME,PARENTID,ADDRESS,ICONfromTree_info,myConn)

DimmyDataAdapterAsNewSqlDataAdapter()

myConn.ConnectionString=application(connectstring)

myCmd.CommandText=

myCmd.Connection=myConn

myDataAdapter.SelectCommand=myCmd

myDataAdapter.Fill(ds,tree)

EndSub

建樹的基本思路是:從根節(jié)點開始遞歸調(diào)用顯示子樹

PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load

CreateDataSet()

intiTree(TreeView1.Nodes,0)

EndSub

PrivateSubintiTree(ByRefNdsAsTreeNodeCollection,ByValparentIdAsInteger)

DimdvAsNewDataView()

DimdrvAsDataRowView

DimtmpNdAsTreeNode

DimintIdAsInteger

dv.Table=ds.Tables(tree)

dv.RowFilter=PARENTID=parentId

ForEachdrvIndv

tmpNd=NewTreeNode()

strId=drv(NODE_ID)

tmpNd.ID=strId

tmpNd.Text=drv(NODE_NAME)

tmpNd.ImageUrl=drv(ICON).ToString

Nds.Add(tmpNd)

intiTree(Nds(Nds.Count-1).Nodes,intId)

Next

EndSub

二、增加、刪除樹節(jié)點

單純在Treeview上增加、刪除、修改節(jié)點只需用Nodes屬性的Add、Remove、等方法即可,值得注意的地方是VS.NET中Treeview的Nodes集合與VS6.0中的區(qū)別,VS6.0中的是一個大的集合,而VS.NET中的是分層的每個Node下都有Nodes屬性。增加、刪除、修改樹節(jié)點時與VS6.0相比有很大區(qū)別,特別是刪除時。

PrivateSubButAdd_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButAdd.Click在選定的節(jié)點下添加子節(jié)點

DimtmpNdAsNewTreeNode(),NdSelAsTreeNode

tmpNd.ID=GetNewId()

NdSel=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex)選中的節(jié)點

tmpNd.Text=新節(jié)點

NdSel.Nodes.Add(tmpNd)

DimmyRowAsDataRow

myRow=ds.Tables(tree).NewRow()

myRow(NODE_NAME)=tmpNd.ID

myRow(NODE_DESCRipT)=新節(jié)點tmpNd.ID_NdSel.ID

myRow(PARENT_NAME)=NdSel.ID

ds.Tables(tree).Rows.Add(myRow)

EndSub

PrivateSubButDele_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesButDele.Click刪除選中的節(jié)點

DimidxAsString=TreeView1.SelectedNodeIndex()

GetNdCol(idx).Remove(TreeView1.GetNodeFromIndex(idx))

DimdvAsNewDataView(),recNoAsInteger

dv.Table=ds.Tables(tree)

dv.RowFilter=NODEID=NdId

dv.Delete(0)

EndSub

PrivateFunctionGetNdCol(ByValidxAsString)AsTreeNodeCollection

獲得選中節(jié)點的父節(jié)點的Nodes集合

DimcntAsInteger,iAsInteger

DimtmpNdsAsTreeNodeCollection

Dimidxs()AsString

idxs=Split(idx,.)

cnt=UBound(idxs)

Ifcnt=0Then

tmpNds=TreeView1.Nodes

Else

tmpNds=TreeView1.Nodes(CInt(idxs(0))).Nodes

Fori=1Tocnt-1

tmpNds=tmpNds(CInt(idxs(i))).Nodes

Next

EndIf

ReturntmpNds

EndFunction

三、修改、移動樹節(jié)點

由于服務(wù)器控件不支持鼠標(biāo)拖動事件,所以不能象Windows程序那樣通過拖動移動節(jié)點,這里是通過選擇父節(jié)點的方式。移動是通過在原位置刪除,新位置添加實現(xiàn)的,要注意在刪除時先保存節(jié)點信息。

PrivateSubTreeView1_SelectedIndexChange(ByValsenderAsObject,ByValeAsMicrosoft.Web.UI.WebControls.TreeViewSelectEventArgs)HandlesTreeView1.SelectedIndexChange

DimdvAsNewDataView()

dv.Table=ds.Tables(tree)

DimtmpNdAsTreeNode=TreeNdSel(e.OldNode),tmpNdsAsTreeNodeCollection

dv.RowFilter=NODEID=tmpNd.ID

dv(0)(NODE_DESCRIPT)=Me.TextBox1.Text

dv(0)(ADDRESS)=Me.TextBox2.Text

dv(0)(TARGET)=Me.TextBox3.Text

dv(0)(ICON)=Me.TextBox4.Text

Ifdv(0)(PARENTID).ToStringMe.DropDownList1.SelectedItem.ValueThen

移動節(jié)點

dv(0)(PARENT_NAME)=Me.DropDownList1.SelectedItem.Value

IfMe.DropDownList1.SelectedItem.Value=ROOTThen

tmpNds=TreeView1.Nodes

Else

tmpNds=FromIdToNode(Me.DropDownList1.SelectedItem.Value,TreeView1.Nodes).Nodes新的父節(jié)點的Nodes集合

EndIf

GetNdCol(e.OldNode).Remove(tmpNd)

tmpNds.Add(tmpNd)

EndIf

tmpNd.Text=Me.TextBox1.Text

tmpNd.ImageUrl=Me.TextBox4.Text

tmpNd=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex)

dv.RowFilter=NODEID=tmpNd.ID

Me.TextBox1.Text=dv(0)(NODENAME).ToString

Me.TextBox2.Text=dv(0)(ADDRESS).ToString

Me.TextBox3.Text=dv(0)(TARGET).ToString

Me.TextBox4.Text=dv(0)(ICON).ToString

EndSub

PrivateFunctionFromIdToNode(ByValIDAsString,ByValNdsAsTreeNodeCollection)AsTreeNode

由關(guān)鍵字查找節(jié)點

DimiAsInteger

DimtmpNdAsTreeNode,tmpNd1AsTreeNode

溫馨提示

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

評論

0/150

提交評論