ASP.NET的層次資料顯示技術 (轉)

worldblog發表於2008-01-22
ASP.NET的層次資料顯示技術 (轉)[@more@]

  的層次資料顯示技術

  在建立方面,有很多地方都要涉及到層次資料的顯示問題,最常見莫過與一個購物網站了,一件商品通常又包含很多相關資訊:價格,介紹,圖片等等,這就是具有層次關係的資料.本文的主題就是講述如何使用(vb)來顯示層次資料
  在本文中,將分兩個部分來說明:

  • 需要了解的相關知識
  • 巢狀資料顯示層次資料 

  需要了解的相關知識
  1,建立具有多個表的DataSet(資料集),本文以 SERVER2000的Pubs為例:
 import System.Data
 import System.Data.SqlClient
 dim objConn as new SqlConnection("Data =Localhost;Database=Pubs;user id=sa;pass=sa")
 objConn.Open()
 dim strSql as string=" * from jobs;Select * from employee"
 dim objAdapter as new SqlDataAdapter(strSql,objConn)
 dim objDs as new DataSet()
 objAdapter.Fill(objDs)
 objConn.Close()
'設定兩個表的名稱
 objDs.Tables(1).TalbeName="jobs"
 objDs.Tables(0).TableName="employee"
' 到此已經建立了具有兩個表的dataset--objDs,但是這兩個表之間還沒有任何關係,現在我們需要為它建立關係
'為這兩個表新增關係
 dim Parent as DataColumn=objDs.Tables("jobs").Columns("job_id")
 dim Child as DataColumn=objDs.Tables("employee").Columns("job_id")
 objDs.Relations.Add("RelationName",Parent,Child)
  2,導航表間關係,以簡單的格式輸出層次資料
  把上面的的兩個表輸出成如下格式:
  job1:
  employee1
  employee2
  ...
  job2:
  employee1
  employee12
  ...
  ....
[vb]
  dim ParentColumn
  dim ChildColumn
  for each ParentColumn in objDs.Tables("jobs").Rows
  Response.Write(ParentColumn("job_desc") & ":
")
  for each ChildColumn in ParentColumn.GetChildRows(RelationName)
  Response.Write(ChildColumn("lname") & " " & ChildColumn("fname") & "
")
  next
  next
  這個的例子輸出的資料已經是有層次關係的了,但這個並不是本文的目的,在做開發web的時候我們並不能把邏輯程式碼嵌在html裡
把程式碼和html分開正是ASP.NET和ASP的重要區別.在下一個部分,我們將結合上面學到的知識,使用ASP.NET提供的功能強大的資料控制元件Repeater,DataList,DataGrid在顯示層次資料

 巢狀資料控制元件實現層次資料的顯示
現在你可以使用Repeater巢狀DataList,或者DataList巢狀Repeater,簡言之,你可以使用Repeater,DataList,DataGrid這三個控制元件的任意組合進行巢狀.在本文,將使用比較簡單的Repeater巢狀Repeater做為例子,方便理解
請在上面的程式碼新增如下兩句資料繫結的程式碼:
 ParentRepeater.DataSource=objDs.Tables("jobs").DefaultView
 ParentRepeater.DataBind()
然後在html里加入下面的程式碼:
 
 
  職位:

 
 
  職員:
 
 
 
 

 

 

本文旨在拋磚引玉,至於像DataList巢狀DataGrid的應用,原理大同小異,需要的是多發點時間多嘗試不同的組合,你甚至可以嘗試建立具有更多資料表以上的dataset,巢狀更多(層)以上的資料控制元件.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998129/,如需轉載,請註明出處,否則將追究法律責任。

相關文章