熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET中使用Treeview和XML

2013-11-13 10:21:54  來源: .NET編程 

  以前在WEB頁面中如果想使用樹形控件的話往往會有些麻煩有時甚至要自己寫代碼來達到用樹形列表顯示數據的目的在中我們可以很方便地使用由微軟提供的Internet Exploer Web Controls控件來實現樹形列表在微軟提供的這套Internet Exploere Web Controls控件集合中包括有MultiPageTabStripTOOLbarTreeview控件在這篇文章中我們來看在中如何使用Treeview控件和XML來實現樹形列表
  
  微軟的這套控件可以在x?tabindex=&tabid=中下載下載後運行setup安裝就可以了現在我們來試下用Treeview控件做個簡單的例子
  
  在中新建一個WEB工程之後在工具箱中鼠標右鍵彈出的菜單中選擇添加新項在自定義工具箱中選擇TREEVIEW控件(注意選擇的是命名空間為Microsoft Internet Exploere web control的命名空間)按確定後就可以在工具箱中出現Treeview控件了
  
  接著將treeview控件拖拉到窗體中切換到HTML視圖這時會發現有如下代碼
  
  <%@ Register TagPrefix=ie
  Namespace=MicrosoftWebUIWebControls
  Assembly=MicrosoftWebUIWebControls %>
  
  當然你可以改變TagPrefix的標記值比如改為FooBar那麼以後在引用Treeview控件時就用如下方式引用
  
  <FooBar:TreeView runat=server />
  
  現在我們可以通過點選Treeview控件的屬性框中的nodes屬性來為該樹添加各類結點了由於比較簡單這裡不詳細講述下面是添加完各類結點後的代碼
  
  <form runat=server
  <ie:TreeView runat=server
  <ie:TreeNode Text=Isaac Gibson Expanded=True
  <ie:TreeNode Text=Birth />
  <ie:TreeNode Text=Death />
  <ie:TreeNode Text=Spouse
  <ie:TreeNode Text=Ritty Gibson />
  <ie:TreeNode Text=Married />
  <ie:TreeNode Text=Children
  <ie:TreeNode Text=Phoebe Gibson
  <ie:TreeNode Text=Birth />
  <ie:TreeNode Text=Death />
  <ie:TreeNode Text=Spouse
  <ie:TreeNode Text=James K Mason />
  <ie:TreeNode Text=Married />
  </ie:TreeNode>
  </ie:TreeNode>
  <ie:TreeNode Text=John Gibson
  <ie:TreeNode Text=Birth />
  <ie:TreeNode Text=Death />
  
  </ie:TreeNode>
  </ie:TreeView>
  </form>
  
  其中我們特別注意一下Expanded=True中的Expanded屬性該屬性當被設置為true時則當頁面被裝載時樹形控件被全部展開
  
  以上是在設計時靜態添加數據到樹形控件的方法而由於XML實質上也是以樹形結構來表示數據的結構因此就可以通過使用XML文件綁定到樹形控件的方法來動態加載數據到控件中去其中有兩種方法可以實現
  
  )另外寫一個符合TREEVIEW格式的XML文件
  
  )通過XSL將XML進行轉換
  先來看下第一種方法建一個XML文件作為例子命名為aspnetbooksxml:
  
  <?xml version= encoding=UTF?>
  <books>
  <book price=
  <title>Teach Yourself Active Server Pages in Days</title>
  <authors>
  <author>Mitchell</author>
  <author>Atkinson</author>
  </authors>
  <year></year>
  </book>
  
  <book price=
  <title>Designing Active Server Pages</title>
  <authors>
  <author>Mitchell</author>
  </authors>
  <year></year>
  </book>
  
  <book price=
  <title>ASPNET: Tips Tutorials and Code</title>
  <authors>
  <author>Mitchell</author>
  <author>Mack</author>
  <author>Walther</author>
  <author>Seven</author>
  <author>Anders</author>
  <author>Nathan</author>
  <author>Wahlin</author>
  </authors>
  <year></year>
  </book>
  
  <book price=
  <title>ASP Unleashed</title>
  <authors>
  <author>Walther</author>
  </authors>
  <year></year>
  </book>
  </books>
  如果我們使用第一種方法必須對XML進行重寫用以下的形式表示才能綁定到樹形控件中去
  
  <TREENODES>
  <treenode text=
  <treenode text=
  </treenode>
  
  <treenode text= />
  
  
  </TREENODES>
  
  就是說根結點必須是treenodes(大小寫都無所謂)每個子結點必須以<treenode>的形式排列於是我們對原來的XML文件改寫為如下的形式
  
  <?xml version= encoding=UTF?>
  <TREENODES>
  <treenode text=Teach Yourself Active Server_u ?ages in Days
  <treenode text=Price $ />
  <treenode text=Authors
  <treenode text=Mitchell />
  <treenode text=Atkinson />
  </treenode>
  <treenode text=Year Published />
  </treenode>
  
  <treenode text=Designing Active Server Pages
  <treenode text=Price $ />
  <treenode text=Authors
  <treenode text=Mitchell />
  </treenode>
  <treenode text=Year Published />
  </treenode>
  〈/TREENODES>
  
  增加以下代碼
  <form runat=server
  <ie:TreeView runat=server
  <ie:TreeNode runat=server Text=ASPNET Books Expanded=True TreeNodeSrc=aspnetbooksxml />
  </ie:TreeView>
  </form>
  
  這樣就將該xml文件綁定到樹形控件中去了運行後可以看到結果
  ASPNET Books
  Teach Yourself Active Server Pages in Days
  Designing Active Server Pages
  ASPNET: Tips Tutorials and Code
  Programming ASPNET
  
  可以看到使用第一種方法的確比較麻煩不能對XML的結點進行篩選或者其他操作而如果使用第二種方法的XSL則可以根據需要隨時對原來的XML進行格式的控制十分方便
  
  在使用XSL時可以用如下的方法對樹形控件進行綁定
  <form runat=server
  <ie:TreeView runat=server
  <ie:TreeNode runat=server Text=ASPNET Books Expanded=True
  TreeNodeSrc=aspnetbooksxml
  TreeNodeXsltSrc=aspbooksxsl />
  </ie:TreeView>
  </form>
  
  其中treenodexsltsrc的屬性中指定要轉換的XSL文件我們設計的XSL文件如下
  <xsl:stylesheet xmlns:xsl= version=
  <xsl:template match=/books
  <TREENODES>
  <xsl:foreach select=book
  <treenode>
  <xsl:attribute name=text
  <xsl:valueof select=title />
  </xsl:attribute>
  
  <treenode>
  <xsl:attribute name=text
  Price $<xsl:valueof select=@price />
  </xsl:attribute>
  </treenode>
  
  <treenode text=Authors
  <xsl:foreach select=authors/author
  <treenode>
  <xsl:attribute name=text
  <xsl:valueof select=text() />
  </xsl:attribute>
  </treenode>
  </xsl:foreach>
  </treenode>
  
  <treenode>
  <xsl:attribute name=text
  Year Published <xsl:valueof select=year />
  </xsl:attribute>
  </treenode>
  </treenode>
  </xsl:foreach>
  </TREENODES>
  </xsl:template>
  </xsl:stylesheet>
  
  在上面的XSL中我們通過形如
  <xsl:attribute name=text
  <xsl:valueof select=title />
  </xsl:attribute>
  
  的屬性設置提取XML文件中每個結點的值將其賦值給予treenode的text屬性中當然也可以在XSL中使用XPATH等設置要顯示的結點
  
  運行後結果同樣與用第一種方法的一樣能正確顯示樹形控件而且靈活性比較高
From:http://tw.wingwit.com/Article/program/net/201311/13397.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.