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

首頁 > 編程 > .NET > 正文

ASP.NET中使用Treeview和XML

2024-07-10 12:55:28
字體:
供稿:網(wǎng)友
以前,在web頁面中如果想使用樹形控件的話,往往會有些麻煩,有時甚至要自己寫代碼來達到用樹形列表顯示數(shù)據(jù)的目的。在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屬性,來為該樹添加各類結(jié)點了,由于比較簡單,這里不詳細講述。下面是添加完各類結(jié)點后的代碼:

<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屬性,該屬性當被設(shè)置為true時,則當頁面被裝載時,樹形控件被全部展開。

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

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

  2)通過xsl將xml進行轉(zhuǎn)換。



  先來看下第一種方法,建一個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>
  就是說,根結(jié)點必須是treenodes(大小寫都無所謂),每個子結(jié)點必須以<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文件綁定到樹形控件中去了,運行后可以看到結(jié)果:

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的結(jié)點進行篩選或者其他操作。而如果使用第二種方法的xsl,則可以根據(jù)需要隨時對原來的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的屬性中指定要轉(zhuǎn)換的xsl文件,我們設(shè)計的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>
  的屬性設(shè)置,提取xml文件中每個結(jié)點的值,將其賦值給予treenode的text屬性中。當然,也可以在xsl中使用xpath等設(shè)置要顯示的結(jié)點。

  運行后,結(jié)果同樣與用第一種方法的一樣,能正確顯示樹形控件,而且靈活性比較高。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 云阳县| 青阳县| 莲花县| 绥滨县| 香河县| 天长市| 丹寨县| 响水县| 南投市| 平和县| 连平县| 垫江县| 柘城县| 苍山县| 香河县| 五莲县| 霍林郭勒市| 新邵县| 靖宇县| 锦州市| 天等县| 太保市| 岚皋县| 建湖县| 辽源市| 安泽县| 盘锦市| 林芝县| 保山市| 南岸区| 苍山县| 黄陵县| 台州市| 光泽县| 田林县| 陕西省| 衡东县| 通山县| 阜阳市| 明星| 黄大仙区|