ASP.NET 2.0中層次數(shù)據(jù)的處理(2)_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:用ASP.NET/C#連接Access和SQL Server數(shù)據(jù)庫
      連接Access 首先看一個例子代碼片斷: 程序代碼: -------------------------------------------------------------------------------- using System.Data; using System.Data.Ole

        雖然只顯示一層也是有用的,但是如果能夠用嵌套的表格式數(shù)據(jù)綁定控件來顯示下面的層次應(yīng)該會更好。幸運的是,ASP.NET 2.0允許你實現(xiàn)這種功能。除了Eval數(shù)據(jù)綁定語法之外,ASP.NET 2.0還提供了基于XPath的數(shù)據(jù)綁定語法,在實現(xiàn)了IXPathNavigable接口的任何數(shù)據(jù)項上都可以使用它。有兩種可用的表達式類型:

        · XPath(expression, [formatString]) - 根據(jù)數(shù)據(jù)項計算Xpath表達式的值,返回單個值。

        · XPathSelect(expression, [formatString]) - 根據(jù)數(shù)據(jù)項計算Xpath表達式的值,返回節(jié)點列表。
        下面的例子是建立在前面的例子基礎(chǔ)之上的,它用Xpath數(shù)據(jù)綁定表達式代替Eval表達式綁定到book節(jié)點的屬性。從表面上看,這樣的操作與每個表達式的"@"前綴相比沒有什么更多功能,只是用于引用節(jié)點屬性的Xpath語法。但是,Xpath的真正靈活性就是依賴于這種引用層次中的任意項(不僅僅是屬性)的能力的。

        這個示例給外部DataList的ItemTemplate模板另外增加了一個DataList,并把這個內(nèi)部DataList的屬性綁定到一個描述當(dāng)前book節(jié)點的chapter子節(jié)點的XPathSelect表達式。在內(nèi)部DataList的ItemTemplate模板中,Xpath數(shù)據(jù)綁定表達式根據(jù)這些"chapter"內(nèi)容節(jié)點來計算值。ASP.NET 2.0利用這種技術(shù),使你能夠通過組合表格式數(shù)據(jù)綁定控件簡便地構(gòu)造出豐富的、分層的數(shù)據(jù)顯示方式。

      <asp:DataList id="MyDataList" DataSourceId="MySource" runat="server">
      <ItemTemplate>
       <img alt="Cover Image" src='<%# "images/" XPath("@ISBN") ".gif" %>'>
       <%# XPath("@Title") %>
       ISBN: <%# XPath("@ISBN") %>
       Price: <%# XPath("@Price") %>

       <asp:DataList id="MyDataList" DataSource='<%# XPathSelect("chapter") %>' runat="server">
       <ItemTemplate>
       Chapter <%# XPath("@num") %>:
       <%# XPath("@name") %>
       <%# XPath(".") %>
      </ItemTemplate>
      </asp:DataList>

      </ItemTemplate>
      </asp:DataList>

        為了處理數(shù)據(jù)綁定控件對特定位置的節(jié)點的請求,XmlDataSource等層次數(shù)據(jù)源控件讓層次中的每個節(jié)點與唯一的路徑相對應(yīng)。這樣就帶來了一些特性,例如TreeView的按需求填充(PopoulateOnDemand)特性,當(dāng)某個節(jié)點被擴展的時候,來自數(shù)據(jù)源的節(jié)點才被發(fā)送到客戶端,而不是一次性地發(fā)送所有的節(jié)點。它也允許你在頁面代碼中用這種方式配置數(shù)據(jù)源來顯示特定位置的節(jié)點。不同的數(shù)據(jù)類型的路徑語法是不同的,而且不能在代碼中構(gòu)造。但是,你可以使用TreeNode的DataPath屬性來訪問綁定到TreeView的節(jié)點的數(shù)據(jù)路徑。由于XmlDataSource把Xpath表達式作為自己的數(shù)據(jù)路徑語法,這些路徑也可以指定給XmlDataSource的Xpath屬性來進行節(jié)點列表的過濾。下面的例子演示了 這種技術(shù),它使用XmlDataSource實現(xiàn)了一個主-從表。例子中有兩個XmlDataSource控件,其中一個綁定到TreeView(主表控件),另一個綁定到DataList(從表控件)。當(dāng)用戶點擊TreeView節(jié)點的時候,就檢索它的DataPath屬性,并把它賦予綁定到DataList的XmlDataSource控件,以顯示被點擊的節(jié)點的詳細信息。

      Sub MyTreeView_SelectedNodeChanged(sender As Object, e As EventArgs)
       Dim path As String = MyTreeView.SelectedNode.DataPath
       MyDetailsSource.XPath = path
       MyDataList.DataSource = MyDetailsSource
       MyDataList.DataBind()
      End Sub
        綁定到站點導(dǎo)航數(shù)據(jù)(Site Navigation)

        站點導(dǎo)航數(shù)據(jù)是ASP.NET中的另外一種層次數(shù)據(jù)。ASP.NET 2.0不僅支持使用ASP.NET中的站點導(dǎo)航API編程訪問站點地圖數(shù)據(jù),還支持使用SiteMapDataSource控件進行宣告式的數(shù)據(jù)綁定。當(dāng)你把TreeView(或Menu)控件綁定到SiteMapDataSource的時候,站點地圖的Text和Url屬性可以綁定到TreeNode(或MenuItem)。盡管你可以用一個數(shù)據(jù)綁定集合來建立這種綁定,但是這樣的操作不是必要的。TreeView和 Menu控件自動地把TreeNode或 MenuItem的Text和NavigateUrl屬性綁定到相關(guān)的站點地圖屬性(這是使用SiteMapNode的INavigateUIData接口實現(xiàn)的)。當(dāng)TreeView和Menu綁定到SiteMapDataSource的時候,它們還有一個特性,會自動地把SelectedNode或SelectedItem屬性設(shè)置為站點地圖中的當(dāng)前節(jié)點。

      分享:ASP.NET、JSP及PHP之間的抉擇
      由于我常接是ASP、JSP及PHP的項目,所以正開始寫一系列的文章來比較它們之間的差別,當(dāng)我寫到一半時,ASP 被宣布了,所以我不得不重新開始審視這個問題。我正在同時做一個JSP項目和一個ASP項目

      來源:模板無憂//所屬分類:.Net教程/更新時間:2008-08-22
      相關(guān).Net教程