国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在ASP.NET中使用Treeview控件和XML

2024-07-10 13:04:14
字體:
來源:轉載
供稿:網友

  以前,在web頁面中如果想使用樹形控件的話,往往會有些麻煩,有時甚至要自己寫代碼來達到用樹形列表顯示數(shù)據的目的。在asp.net中,我們可以很方便地使用由微軟提供的internet exploer web controls控件來實現(xiàn)樹形列表。在微軟提供的這套internet exploere web controls控件集合中,包括有multipage,tabstrip,toolbar,treeview控件。在這篇文章中,我們來看在asp.net中如何使用treeview控件和xml來實現(xiàn)樹形列表。

  微軟的這套控件可以在http://asp.net/iewebcontrols/download.aspx?tabindex=0&tabid=1中下載,下載后運行setup安裝就可以了。現(xiàn)在我們來試下用treeview控件做個簡單的例子。

  在vs.net中新建一個web工程,之后在工具箱中,鼠標右鍵彈出的菜單中,選擇“添加新項”,在自定義工具箱中,選擇treeview控件(注意選擇的是命名空間為microsoft internet exploere web control的命名空間),按確定后,就可以在工具箱中出現(xiàn)treeview控件了。

  接著,將treeview控件拖拉到窗體中,切換到html視圖,這時會發(fā)現(xiàn)有如下代碼:

<%@ register tagprefix="ie"
namespace="microsoft.web.ui.webcontrols"
assembly="microsoft.web.ui.webcontrols" %>

  當然,你可以改變tagprefix的標記值,比如,改為foobar,那么以后在引用treeview控件時,就用如下方式引用:

<foobar:treeview runat="server" ... />

  現(xiàn)在,我們可以通過點選treeview控件的屬性框中的nodes屬性,來為該樹添加各類結點了,由于比較簡單,這里不詳細講述。下面是添加完各類結點后的代碼:

<form runat="server">
 <ie:treeview runat="server">
  <ie:treenode text="isaac gibson" expanded="true">
   <ie:treenode text="birth - 1766" />
   <ie:treenode text="death - 1827" />
   <ie:treenode text="spouse">
   <ie:treenode text="ritty gibson" />
   <ie:treenode text="married 1789" />
   <ie:treenode text="children">
   <ie:treenode text="phoebe gibson">
   <ie:treenode text="birth - 1790" />
   <ie:treenode text="death - 1884" />
   <ie:treenode text="spouse">
    <ie:treenode text="james k. mason" />
    <ie:treenode text="married 1819" />
   </ie:treenode>
  </ie:treenode>
  <ie:treenode text="john gibson">
   <ie:treenode text="birth - 1793" />
   <ie:treenode text="death - 1802" />
   ......
  </ie:treenode>
 </ie:treeview>
</form>

  其中我們特別注意一下expanded="true"中的expanded屬性,該屬性當被設置為true時,則當頁面被裝載時,樹形控件被全部展開。

  以上是在設計時,靜態(tài)添加數(shù)據到樹形控件的方法。而由于xml實質上也是以樹形結構來表示數(shù)據的結構,因此,就可以通過使用xml文件綁定到樹形控件的方法,來動態(tài)加載數(shù)據到控件中去,其中有兩種方法可以實現(xiàn):

  1)另外寫一個符合treeview格式的xml文件

  2)通過xsl將xml進行轉換。

  先來看下第一種方法,建一個xml文件作為例子,命名為aspnetbooks.xml:

<?xml version="1.0" encoding="utf-8"?>
<books>
 <book price="34.95">
  <title>teach yourself active server pages 3.0 in 21 days</title>
  <authors>
   <author>mitchell</author>
   <author>atkinson</author>
  </authors>
  <year>1999</year>
</book>

<book price="29.95">
<title>designing active server pages</title>
<authors>
 <author>mitchell</author>
</authors>
 <year>2000</year>
</book>

<book price="34.95">
<title>asp.net: 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>2001</year>
</book>

<book price="24.95">
<title>asp unleashed</title>
<authors>
 <author>walther</author>
</authors>
<year>1998</year>
</book>
</books>

  如果我們使用第一種方法,必須對xml進行重寫,用以下的形式表示,才能綁定到樹形控件中去:

<treenodes>
<treenode text="...">
<treenode text="...">
</treenode>

<treenode text="..." />

...
</treenodes>

  就是說,根結點必須是treenodes(大小寫都無所謂),每個子結點必須以<treenode>的形式排列。于是,我們對原來的xml文件改寫為如下的形式:

<?xml version="1.0" encoding="utf-8"?>
<treenodes>
 <treenode text="teach yourself active server_u80 ?ages 3.0 in 21 days">
  <treenode text="price - $34.95" />
  <treenode text="authors">
   <treenode text="mitchell" />
   <treenode text="atkinson" />
  </treenode>
  <treenode text="year published - 2000" />
 </treenode>

 <treenode text="designing active server pages">
  <treenode text="price - $29.95" />
  <treenode text="authors">
   <treenode text="mitchell" />
  </treenode>
  <treenode text="year published - 2000" />
 </treenode>
〈/treenodes>

  增加以下代碼:

<form runat="server">
 <ie:treeview runat="server">
 <ie:treenode runat="server" text="asp.net books" expanded="true" treenodesrc="aspnetbooks.xml" />
 </ie:treeview>
</form>

  這樣就將該xml文件綁定到樹形控件中去了,運行后可以看到結果:

asp.net books
teach yourself active server pages 3.0 in 21 days
designing active server pages
asp.net: tips, tutorials, and code
programming asp.net

  可以看到,使用第一種方法的確比較麻煩,不能對xml的結點進行篩選或者其他操作。而如果使用第二種方法的xsl,則可以根據需要隨時對原來的xml進行格式的控制,十分方便。

  在使用xsl時,可以用如下的方法對樹形控件進行綁定:

<form runat="server">
<ie:treeview runat="server">
<ie:treenode runat="server" text="asp.net books" expanded="true"
treenodesrc="aspnetbooks.xml"
treenodexsltsrc="aspbooks.xsl" />
</ie:treeview>
</form>

  其中,treenodexsltsrc的屬性中指定要轉換的xsl文件,我們設計的xsl文件如下:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version='1.0'>
<xsl:template match="/books">
 <treenodes>
  <xsl:for-each select="book">
  <treenode>
   <xsl:attribute name="text">
    <xsl:value-of select="title" />
   </xsl:attribute>

  <treenode>
   <xsl:attribute name="text">
    price - $<xsl:value-of select="@price" />
   </xsl:attribute>
  </treenode>

  <treenode text="authors">
   <xsl:for-each select="authors/author">
    <treenode>
     <xsl:attribute name="text">
      <xsl:value-of select="text()" />
     </xsl:attribute>
    </treenode>
   </xsl:for-each>
  </treenode>

  <treenode>
   <xsl:attribute name="text">
    year published - <xsl:value-of select="year" />
   </xsl:attribute>
  </treenode>
 </treenode>
</xsl:for-each>
</treenodes>
</xsl:template>
</xsl:stylesheet>

  在上面的xsl中,我們通過形如:

<xsl:attribute name="text">
<xsl:value-of select="title" />
</xsl:attribute>

  的屬性設置,提取xml文件中每個結點的值,將其賦值給予treenode的text屬性中。當然,也可以在xsl中使用xpath等設置要顯示的結點。

  運行后,結果同樣與用第一種方法的一樣,能正確顯示樹形控件,而且靈活性比較高。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 留坝县| 广州市| 邵东县| 洪江市| 罗平县| 松溪县| 凌源市| 齐河县| 白玉县| 湟源县| 任丘市| 左云县| 曲靖市| 循化| 锡林郭勒盟| 舒兰市| 平果县| 平舆县| 美姑县| 于田县| 黎平县| 娄底市| 喜德县| 军事| 长海县| 滁州市| 霸州市| 北川| 临安市| 旌德县| 彰化县| 舒兰市| 纳雍县| 淄博市| 赤峰市| 嵩明县| 郁南县| 沙雅县| 岑巩县| 鄂州市| 平阴县|