1
我需要根據表/數據集中的值生成菜單。該表包含與以下圖像數據類似的數據。主菜單包含4個值,產品,應用程序,文檔,支持。每個菜單都有其菜單項。如何使用數據集和顯示菜單和菜單項來生成菜單的XML
下面是用於主網頁的代碼SITEMASTER:
<asp:Menu ID="Menu1" runat="server" DataSourceID="XmlDataSource1" BackColor="#0072c5"
CssClass="Menu" DynamicHorizontalOffset="2" Font-Names="Verdana" Font-Size="12px"
ForeColor="#F7F6F3" Width="100%" StaticSubMenuIndent="10px" Orientation="Horizontal"
StaticDisplayLevels="2">
<DataBindings>
<asp:MenuItemBinding DataMember="MenuItem" NavigateUrlField="NavigateUrl" TextField="Text" ToolTipField="ToolTip" />
</DataBindings>
</asp:Menu>
<asp:XmlDataSource ID="XmlDataSource1" TransformFile="~/Default2.xslt" XPath="MenuItems/MenuItem"runat="server"></asp:XmlDataSource>
我生成的XML如下。
<Menus ProductName="Acapella Admin">
<Menu MenuID="1" Text="Products">
<MenuItem MenuID="1" Text="ProductInfo" URL="ProductInfo.aspx"/>
<MenuItem MenuID="2" Text="Product Features" URL="ProductFeatures.aspx"/>
<MenuItem MenuID="3" Text="Products Details" URL="ProductDetails.aspx" />
</Menu>
<Menu MenuID="1" Text="Applications">
<MenuItem MenuID="1" Text="MobileApps" URL="MobileApps.aspx"/>
<MenuItem MenuID="2" Text="Web Applications" URL="WebApplications.aspx"/>
<MenuItem MenuID="3" Text="Portal" URL="Portal.aspx" />
</Menu>
<Menu MenuID="2" Text="Document">
<MenuItem MenuID="4" Text="Tutorial" URL="Tutorial.aspx" />
</Menu>
<Menu MenuID="4" Text="Support">
<MenuItem MenuID="5" Text="FAQs" URL="FAQs.aspx" />
<MenuItem MenuID="6" Text="Contact us" URL="ContactUS.aspx" />
</Menu>
</Menus>
我的XSLT樣式表:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<!-- Replace root node name Menus with MenuItems
and call MenuListing for its children-->
<xsl:template match="/Menus">
<MenuItems>
<xsl:call-template name="MenuListing" />
</MenuItems>
</xsl:template>
<!-- Allow for recursive child nodeprocessing -->
<xsl:template name="MenuListing">
<xsl:apply-templates select="Menu" />
</xsl:template>
<xsl:template match="Menu">
<MenuItem>
<!-- Convert Menu child elements to MenuItem attributes -->
<xsl:attribute name="Text">
<xsl:value-of select="Text"/>
</xsl:attribute>
<xsl:attribute name="ToolTip">
<xsl:value-of select="Description"/>
</xsl:attribute>
<xsl:attribute name="NavigateUrl">
<xsl:text>?Sel=</xsl:text>
<xsl:value-of select="Text"/>
</xsl:attribute>
<!-- Recursively call MenuListing forchild menu nodes -->
<xsl:if test="count(Menu) >0">
<xsl:call-template name="MenuListing" />
</xsl:if>
</MenuItem>
</xsl:template>
</xsl:stylesheet>
幫助我在生成XML並將其綁定到用的XmlDataSource菜單。
你爲什麼使用'xmlDataSource'爲什麼不能使用其他數據源呢? –
其實我被要求不要使用siteMaps,因爲每個用戶的Menu不同。上面顯示的圖片屬於普通用戶。但是對於任何用戶菜單及其項目應該基於ModuleID顯示。 – Sanjeev4evr
感謝您編輯@Mathias Muller .. – Sanjeev4evr