999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺析樹形控件在ASP.NET中的使用

2009-08-25 09:37:52劉雄軍寧云智
消費(fèi)導(dǎo)刊 2009年14期

劉雄軍 寧云智

[摘 要]在上網(wǎng)時(shí)經(jīng)常會(huì)看到一些網(wǎng)站在左邊采用類似資源管理器的樹形結(jié)構(gòu),單擊樹形結(jié)構(gòu)中的分支,相應(yīng)的內(nèi)容將在右邊顯示,層次清晰且方便快捷,本文主要介紹TreeView控件在ASP.NET中的應(yīng)用,旨在對(duì)想在網(wǎng)站上使用樹形結(jié)構(gòu)的讀者提供幫助。

[關(guān)鍵詞]TreeView 數(shù)據(jù)庫(kù)連接 數(shù)據(jù)綁定 樹形控件 控件

一、概述

TreeView是一個(gè)重要的控件,無(wú)論是在VB.NET,C# 還是VB、Delphi等各種語(yǔ)言中,都充當(dāng)了導(dǎo)航器的作用。在實(shí)際工作中,很多情況下需要將TreeView與數(shù)據(jù)庫(kù)進(jìn)行連接,以填充其節(jié)點(diǎn)。在Windows Form和Web Form中,我們可以用TreeView來(lái)顯示樹形結(jié)構(gòu),如顯示目錄樹、顯示地區(qū)、分類顯示商品等。可以說(shuō),在大部分軟件的開發(fā)中,TreeView都是一個(gè)不可缺少的展示控件。因此,樹形結(jié)構(gòu)的設(shè)計(jì)就成了軟件開發(fā)人員一個(gè)永恒的話題。

二、在Visual Studio .NET 2003中添加樹形控件

(一)安裝TreeView控件。從網(wǎng)上下載IEWebControls文件,并安裝,注意其安裝目錄的位置。

(二)更改“build.bat”文件的屬性。打開其安裝目錄,右擊“bulid.bat”文件,選擇“屬性”,打開“build.bat屬性”對(duì)話框,取消“只讀”屬性。

(三)查找“csc.exe”文件的路徑。“csc.exe”為系統(tǒng)文件,默認(rèn)的路徑為“C:WINDOWSMicrosoft.NETFrameworkv1. 1.4322”。

(四)修改“build.bat”文件。右擊“bulid.bat”文件,選擇“編輯”,打開“build.bat”文件,如圖1如所。csc.exe的路徑與上一步查詢得到的路徑是否相同,若不相同則改之,修改之后保存文件。

(五)執(zhí)行“build.bat”文件。雙擊“build.bat”文件,安裝目錄將生成一個(gè)“build”文件夾,此文件夾下的文件就是我們使用樹形控件時(shí)要用到的文件。

(六)復(fù)制文件到ASP.NET主目錄下。將“C:Program FilesIE Web Controls uild”下“runtime”文件夾下所有內(nèi)容復(fù)制到主目錄“webctrl_client1_0”下,如果主目錄下沒有“webctrl_client 1_0”文件夾,則創(chuàng)建此路徑的文件夾。

(七)復(fù)制“Microsoft.Web.UI.Web Controls.dll”文件。將“C:Program FilesI E Web Controlsuild”下“Microsoft.Web. UI.WebControls.dll”文件復(fù)制到主目錄。

(八)將樹形控件添加到工具箱。打開Microsoft Visual Studio .NET,右擊工具箱,選擇“添加/移除項(xiàng)…”,打開“自定義工具箱”,單擊“瀏覽”按鈕,選擇“Microsoft.Web.UI.WebControls.dll”文件,單擊“確定”,TreeView控件將添加到工具箱中。

三、樹形控件在ASP.NET中的應(yīng)用

TreeView控件中的數(shù)據(jù)來(lái)源有三種方式:界面設(shè)計(jì)時(shí)在TreeView設(shè)計(jì)器或者代碼中直接填充TreeView控件、從XML文件中建立樹形結(jié)構(gòu)和從數(shù)據(jù)庫(kù)中得到數(shù)據(jù),建立樹形結(jié)構(gòu)。前兩種相對(duì)來(lái)說(shuō)較簡(jiǎn)單,這里就不介紹了,這里重點(diǎn)介紹從數(shù)據(jù)庫(kù)中得到數(shù)據(jù)。

一般來(lái)講,我們的應(yīng)用程序多數(shù)是基于數(shù)據(jù)庫(kù)的。采用從數(shù)據(jù)庫(kù)中得到數(shù)據(jù)的這種方式,增加、修改、刪除一顆樹的節(jié)點(diǎn)很方便,只要操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)就可以了。而且,這種方式可以和數(shù)據(jù)庫(kù)中的其它表做關(guān)聯(lián)、查詢和匯總,通過(guò)設(shè)計(jì)視圖或存儲(chǔ)過(guò)程,很容易查詢出你想要的相關(guān)數(shù)據(jù)。

(一)數(shù)據(jù)庫(kù)設(shè)計(jì)

我們?cè)赟QL SERVER 2000里建立一個(gè)表Tree_Tb,表的結(jié)構(gòu)設(shè)計(jì)如下:

關(guān)于Depth(深度)字段,主要是存放節(jié)點(diǎn)的層數(shù),也就是說(shuō)這個(gè)節(jié)點(diǎn)在樹中的哪個(gè)層。有Depth(深度)字段,我們編程時(shí)會(huì)比較方便,在SQL查詢時(shí)只有加一個(gè)where條件就可以查詢出當(dāng)前深度的層的所有節(jié)點(diǎn)。如果我們不設(shè)計(jì)Depth(深度)字段,同樣可以做類似的查詢,這就需要在后臺(tái)的SQL 查詢中用循環(huán)處理?;蛘?你可以不在后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器端處理,把這些處理放在前臺(tái)。

建數(shù)據(jù)表的腳本如下:

CREATE TABLE [dbo].[Tree_Tb] ( [ID] [int] NOT NULL , [Context] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,[ParentID] [int] NULL ,[depth] [int] NULL ) ON [PRIMARY]

在表中添加數(shù)據(jù),如下代碼所示:

insert Tree_Tb (ID,Context,ParentID,depth)values ( 1,'中國(guó)',0,0)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 2,'北京',1,1)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 3,'湖南省',1,1)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 4,'河北省',1,1)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 5,'廣東省',1,1)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 6,'廣州',5,2)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 7,'四川省',1,1)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 8,'成都',7,2)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 9,'長(zhǎng)沙',3,2)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 10,'石家莊',4,2)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 11,'株洲',3,2)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 12,'湘潭',3,2)

insert Tree_Tb (ID,Context,ParentID,depth)values ( 13,'上海',1,1)

數(shù)據(jù)內(nèi)容如圖2所示。

(二)在ASP.NET中的實(shí)現(xiàn)

在ASP.NET中實(shí)現(xiàn)將數(shù)據(jù)庫(kù)數(shù)據(jù)綁定到樹形控件的思路是:從數(shù)據(jù)庫(kù)中查詢到所有節(jié)點(diǎn)的記錄,添加到DataView中,利用DataView的.RowFilter屬性得到某個(gè)父節(jié)點(diǎn)編號(hào)ParentID下的所有記錄,依次遞歸循環(huán)。程序代碼如下。

Private ds As New DataSet ()

' AddTree遞歸函數(shù)每次都要用到數(shù)據(jù)集中的一個(gè)表,所以定義成private

Private Sub Form1_Load

(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles MyBase.Load

' '定義數(shù)據(jù)庫(kù)連接

Dim CN As New SqlConnection()

Try

'初始化連接字符串

CN.ConnectionString = “server=.;database=pubs; user id=sa;Password=sa;” CN.Open()

'添加命令,從數(shù)據(jù)庫(kù)中得到數(shù)據(jù)

Dim sqlCmd As New SqlCommand()

sqlCmd.Connection = CN

sqlCmd.CommandText = "select * from Tree_Tb"

sqlCmd.CommandType = CommandType.Text

Dim adp As SqlDataAdapter = New SqlDataAdapter(sqlCmd)

adp.Fill(ds)

Catch ex As Exception

MsgBox(ex.Message)

Finally

'關(guān)閉連接

CN.Close()

End Try

'調(diào)用遞歸函數(shù),完成樹形結(jié)構(gòu)的生成

AddTree(0, Nothing)

End Sub

'遞歸添加樹的節(jié)點(diǎn)

Private Sub AddTree(ByVal ParentID As Integer, ByVal pNode As TreeNode)

Dim Node As TreeNode

Dim dvTree As New DataView()

dvTree = New DataView(ds.Tables(0))

'過(guò)濾ParentID,得到當(dāng)前的所有子節(jié)點(diǎn)

dvTree.RowFilter = "PARENTID = " + ParentID.ToString

Dim Row As DataRowView

For Each Row In dvTree

If pNode Is Nothing Then'判斷是否根節(jié)點(diǎn)

'添加根節(jié)點(diǎn)

Node = TreeView1.Nodes.Add(Row("context").ToString())

'再次遞歸

AddTree(Int32.Parse(Row("ID").ToString()),Node)Else

‘添加當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)

Node = pNode.Nodes.Add(Row("context").ToString())

'再次遞歸

AddTree(Int32.Parse(Row("ID").ToString()), Node)

End If

Node.EnsureVisible()

Next

End Sub

執(zhí)行上面的程序就可以看到將數(shù)據(jù)庫(kù)的數(shù)據(jù)綁定到了樹形控件。

四、結(jié)束語(yǔ)

TreeView是一個(gè)重要的導(dǎo)航控件,希望本文的介紹能對(duì)想在網(wǎng)站上使用樹形結(jié)構(gòu)的讀者有所幫助。

參考文獻(xiàn)

[1]Microsoft Visual Studio 。NET 2003文檔

[2]MSDN Library Visual Studio。NET

[3]黃志超,李婷婷Visual Basic。NET項(xiàng)目開發(fā)實(shí)踐

[4]楊帆,趙義霞。ASP.NET技術(shù)與應(yīng)用

[5]Sanjew Rohilla,Senthil NathanADO.NET專業(yè)項(xiàng)目實(shí)例開發(fā)。陳君,王寶良譯,中國(guó)水利水電出版社,2003

主站蜘蛛池模板: 国产精品久久精品| 97精品伊人久久大香线蕉| 蜜桃臀无码内射一区二区三区 | 日韩精品无码免费一区二区三区 | 久草国产在线观看| 99久久精品视香蕉蕉| 一级毛片网| 伊伊人成亚洲综合人网7777| 久久亚洲高清国产| 91视频精品| 国产又黄又硬又粗| 国产精品三级av及在线观看| 欧美19综合中文字幕| 国产高清无码麻豆精品| 午夜国产在线观看| 丁香婷婷综合激情| 久久夜色精品| 91免费片| 97在线观看视频免费| 久久黄色视频影| 久久久久久久久久国产精品| 久久精品只有这里有| 国产成人综合网| 亚洲第一区在线| 欧美一级专区免费大片| 国产极品美女在线| 国产男女XX00免费观看| 精品夜恋影院亚洲欧洲| 亚洲女同欧美在线| 一级片一区| 欧美区国产区| 日韩国产精品无码一区二区三区| 久久无码免费束人妻| 高潮爽到爆的喷水女主播视频 | 亚洲天堂区| 国产成人午夜福利免费无码r| 国产后式a一视频| 成年网址网站在线观看| 成年人福利视频| 久草网视频在线| 中文毛片无遮挡播放免费| 国产超碰一区二区三区| 夜夜操狠狠操| 精品成人一区二区三区电影| 亚洲精品无码久久久久苍井空| 国产小视频a在线观看| 国产成人艳妇AA视频在线| 2020国产在线视精品在| 国产sm重味一区二区三区| 制服丝袜国产精品| 91九色国产porny| 国产精品久久精品| 国产本道久久一区二区三区| AV无码一区二区三区四区| 中文字幕久久精品波多野结| 国产亚洲欧美在线专区| 国产迷奸在线看| 亚洲日本一本dvd高清| 日日摸夜夜爽无码| 精品久久久久久成人AV| 日韩中文精品亚洲第三区| 91国内在线观看| www中文字幕在线观看| 尤物国产在线| 欧美国产菊爆免费观看| 亚洲无限乱码| 国产毛片不卡| 国产成人一区| 日本一区二区三区精品视频| 亚州AV秘 一区二区三区| 久久精品人妻中文系列| 永久天堂网Av| 一级一级一片免费| 伊人91在线| 一级毛片在线播放| 97人人做人人爽香蕉精品| 欧美区一区二区三| 91极品美女高潮叫床在线观看| 97国产成人无码精品久久久| 亚洲VA中文字幕| 亚洲高清无在码在线无弹窗| 亚洲国产天堂久久九九九|