2012-05-17 43 views
0

我有一個這樣的XML:XML到TreeView的基礎上的ParentId

<table name="tblcats"> 
<row> 
     <Id>1741</Id> 
     <Industry>Oil &amp; Gas - Integrated</Industry> 
     <ParentId>1691</ParentId> 
    </row> 
    <row> 
     <Id>1690</Id> 
     <Industry>Commodities</Industry> 
     <ParentId>1691</ParentId> 
    </row> 
    <row> 
     <Id>1691</Id> 
     <Industry>Capital Goods</Industry> 
     <ParentId>0</ParentId> 
    </row> 
</table> 

我想創建這個XML使表是父節點的樹狀視圖,然後節點的ParentId 0是第二父,然後子節點與父節點編號大於0

像這樣:

+表 +資本貨物 商品 石油天然氣& - 集成

我該怎麼做?請建議

問候, 阿西夫·哈米德

回答

1

一個相當簡單的方法是使用標準的ASP.NET控件的XmlDataSource和TreeView和使用XSLT轉換文件到你的XML轉換成的東西,TreeView控件喜歡。

因此,假設你有上面一個名爲cats.xml的XML,ASP.NET頁面的標記將如下所示:

<asp:XmlDataSource ID="CatsXml" runat="server" DataFile="~/cats.xml" TransformFile="~/cats.xslt"></asp:XmlDataSource> 
<asp:TreeView ID="CatsTree" runat="server" DataSourceID="CatsXml"> 
    <DataBindings><asp:TreeNodeBinding TextField="name" ValueField="id" /></DataBindings> 
</asp:TreeView> 

和XSLT文件(cats.xslt)將是:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="table"> 
    <table id="-1" name="Table"> 
     <xsl:for-each select="/table/row[ParentId = 0]"> 
     <industry> 
      <xsl:attribute name="id"> 
      <xsl:value-of select="Id"/> 
      </xsl:attribute> 
      <xsl:attribute name="name"> 
      <xsl:value-of select="Industry"/> 
      </xsl:attribute> 
      <xsl:call-template name="industry-template"> 
      <xsl:with-param name="pId" select="Id" /> 
      </xsl:call-template> 
     </industry> 
     </xsl:for-each> 
    </table> 
    </xsl:template> 

    <xsl:template name="industry-template"> 
    <xsl:param name="pId" /> 
    <xsl:for-each select="/table/row[ParentId = $pId]"> 
     <industry> 
     <xsl:attribute name="id"> 
      <xsl:value-of select="Id"/> 
     </xsl:attribute> 
     <xsl:attribute name="name"> 
      <xsl:value-of select="Industry"/> 
     </xsl:attribute> 
     <xsl:call-template name="industry-template"> 
      <xsl:with-param name="pId" select="Id" /> 
     </xsl:call-template> 
     </industry> 
    </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 

斯圖爾特。

+0

這不起作用 – CarneyCode