ASP.NET 2.0中層次數(shù)據(jù)的處理
2006/12/25 23:46:47
數(shù)據(jù)源控件可以同時(shí)暴露平面表格式的或?qū)哟蔚臄?shù)據(jù)。前面演示的SqlDataSource和ObjectDataSource控件都是平面表格式的數(shù)據(jù)源控件。ASP.NET 2.0還包含兩個(gè)層次數(shù)據(jù)源控件:用于連接XML文件的XmlDataSource和用于連接站點(diǎn)導(dǎo)航數(shù)據(jù)的SiteMapDataSource。這一部分將介紹這些控件的使用技術(shù)。

  TreeView和Menu控件

  數(shù)據(jù)綁定控件與數(shù)據(jù)源控件類似,也可以是層次的。表格式數(shù)據(jù)綁定控件顯示數(shù)據(jù)列表或表格,層次數(shù)據(jù)綁定控件能夠用遞規(guī)方式獲取層次數(shù)據(jù),在UI中用父-子關(guān)系顯示數(shù)據(jù)。ASP.NET 2.0中的分層數(shù)據(jù)綁定控件的例子有TreeView和Menu控件。下面將介紹把這些控件綁定到層次數(shù)據(jù)源的一些技術(shù),包括很多示例。

  綁定到XML

  XmlDataSource控件允許其它控件綁定到XML數(shù)據(jù)。XmlDataSource支持DataFile屬性,它被用于指定作為輸入(input)的XML數(shù)據(jù)文件的路徑。你還可以指定TranformFile屬性,給數(shù)據(jù)應(yīng)用XSLT轉(zhuǎn)換;設(shè)置XPath屬性來指定需要暴露的數(shù)據(jù)源節(jié)點(diǎn)的子集。

  下面的例子演示了一個(gè)通過XmlDataSource控件綁定到XML文件的TreeView控件。這個(gè)TreeView把每個(gè)TreeNode對象的屬性與分層樹中的XML節(jié)點(diǎn)的屬性關(guān)聯(lián)起來了(為了進(jìn)行數(shù)據(jù)綁定,XML節(jié)點(diǎn)的屬性都被處理為數(shù)據(jù)項(xiàng)的屬性)。在默認(rèn)情況下,TreeView控件通過調(diào)用對象的ToString()方法簡單地顯示數(shù)據(jù)項(xiàng)。它顯示了XML節(jié)點(diǎn)的元素(element)名稱,這樣你就可以看到TreeView所綁定的節(jié)點(diǎn)層次。它不一定能夠顯示出你所需要的內(nèi)容,但它提供了一個(gè)很好的出發(fā)點(diǎn),未來你將更容易定制XML數(shù)據(jù)的顯示方式。

    <asp:XmlDataSource ID="MySource" DataFile="~/App_Data/Bookstore.xml" runat="server"/>
<asp:TreeView ID="TreeView1" SkinId="Bookstore" DataSourceId="MySource"
ExpandDepth="3" MaxDataBindDepth="3" runat="server" />
  為了讓TreeView顯示更有意義的內(nèi)容,你可以為樹中的每個(gè)節(jié)點(diǎn)指定不同的數(shù)據(jù)綁定。為了定義層次數(shù)據(jù)項(xiàng)的字段如何映射到TreeNode屬性,你可以把TreeNodeBinding對象添加到TreeView的Databindings集合中。TreeNodeBinding的兩個(gè)重要屬性決定了如何在層次數(shù)據(jù)項(xiàng)集合上使用綁定。DataMember屬性指定了數(shù)據(jù)項(xiàng)的類型或者XML數(shù)據(jù)中用于綁定的元素名稱。Depth屬性指定了應(yīng)用于層次樹的數(shù)據(jù)綁定的深度。你可以設(shè)置DataMember或Depth,或者兩個(gè)屬性都設(shè)置。例如,如果要定義XML文件中的所有Book元素的數(shù)據(jù)綁定,只需要把DataMember設(shè)置為"Book"。為了定義所有深度為1的節(jié)點(diǎn)的數(shù)據(jù)綁定,只需要把Depth設(shè)置為1。如果要定義深度為1的所有Book節(jié)點(diǎn),需要把TreeNodeBinding對象的DataMember設(shè)置為"Book",同時(shí)把Depth設(shè)置為1。

  當(dāng)你設(shè)置了DataMember或Depth用于匹配節(jié)點(diǎn)集合之后,就可以定義TreeNodeDataBinding的另外一些屬性來定制數(shù)據(jù)項(xiàng)的屬性(或XML數(shù)據(jù)中的XML節(jié)點(diǎn)屬性)如何映射到TreeView控件的TreeNode的屬性。例如,TextField屬性定義了顯示為TreeNode文本的屬性名稱;類似地,ValueField屬性定義了作為TreeNode值的數(shù)據(jù)項(xiàng)屬性;NavigateUrlField屬性定義了TreeNode導(dǎo)航鏈接的字段/屬性,等等。你還可以為一個(gè)已有數(shù)據(jù)綁定的TreeNode屬性指定靜態(tài)值。例如,指定Book元素的TreeNode使用"Book.gif"圖像、設(shè)置DataMember屬性是"Book"的TreeNodeBinding的ImageUrl屬性。

  下面的例子演示了一個(gè)綁定到XML數(shù)據(jù)的TreeView,數(shù)據(jù)綁定只應(yīng)用在XML層次樹的特定元素上。

    <Databindings>
 <asp:TreeNodeBinding DataMember="Bookstore" Text="Bookstore" ImageUrl="~/images/xp/folder.gif" />
 <asp:TreeNodeBinding DataMember="genre" TextField="name" ImageUrl="~/images/xp/folder.gif" />
</Databind

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 国产三级在线播放线| 成人永久免费高清| 亚洲精品无码久久毛片| 羞羞视频在线播放| 国产成人麻豆亚洲综合无码精品 | 国产偷久久久精品专区| ass亚洲**毛茸茸pics| 在逃生游戏里挨c海棠小说| 上原亚衣一区二区在线观看| 日本高清xxxxx| 亚洲av无码乱码精品国产| 欧美熟妇另类久久久久久不卡| 午夜视频免费看| 色香蕉在线观看网站| 国产无套粉嫩白浆在线| 26uuu另类亚洲欧美日本| 女地狱肉之壶极限调教2| 久久亚洲精品成人| 欧美日韩综合在线视频免费看| 十八岁的天空完整版在线观看 | 久久精品国产9久久综合| 欧美啊v在线观看| 亚洲精品国产精品乱码不卡√| 真实国产乱子伦在线观看| 啊~又多了一根手指| 里番acg全彩本子| 国产精品无码一区二区三级| 99精品国产第一福利网站| 拨开内裤直接进入| 久久国产精品99精品国产| 欧美a在线观看| 亚洲欧美视频二区| 渣男渣女抹胸渣男渣女在一起| 全免费毛片在线播放| 美女脱下裤子让男人捅| 国产亚洲美女精品久久| 国产h片在线观看| 国产欧美在线不卡| porn在线精品视频| 国产精品高清一区二区三区不卡| 99re这里有免费视频精品|